diff options
Diffstat (limited to 'scripts/generate_latex.py')
| -rwxr-xr-x | scripts/generate_latex.py | 194 |
1 files changed, 0 insertions, 194 deletions
diff --git a/scripts/generate_latex.py b/scripts/generate_latex.py deleted file mode 100755 index 71a99915..00000000 --- a/scripts/generate_latex.py +++ /dev/null @@ -1,194 +0,0 @@ -#!/usr/bin/env python3 -import argparse -import configparser -import pathlib -import os -from typing import MutableMapping - -COLLECTION_TEMPLATE = \ -"""\\documentclass[a4paper,landscape]{{article}} - -% Ränder des Dokuments anpassen -\\usepackage[margin=6mm,top=5mm]{{geometry}} - -% Pakete dazuladen -\\input{{libs.tex}} -% Farbdefinitionen laden -\\input{{colors.tex}} -% \card-Commands laden -\\input{{tikzcards.tex}} - -\\usepackage{{standalone}} - -\\begin{{document}} -\\begin{{center}} -\\pagestyle{{empty}} -{0} -\\end{{center}} -\\end{{document}} -""" - -CARD_TEMPLATE = \ -"""\\documentclass[]{{standalone}} - -% Pakete dazuladen -\\input{{libs.tex}} -% Farbdefinitionen laden -\\input{{colors.tex}} -% \card-Commands laden -\\input{{tikzcards.tex}} - -\\begin{{document}} -\\begin{{tikzpicture}} -{0} -\\cardborder -\\end{{tikzpicture}} -\\end{{document}} -""" - -SET_SYMBOLS = {'base': 'base', 'magic': 'magic', 'equipments': 'equipments', 'nautics': 'nautics', 'misc': '', 'kraken': 'kraken'} - -LATEX_ROOT = pathlib.Path(os.getcwd()) -ASSETS_DIR = LATEX_ROOT / '../assets' -CARDS_DIR = LATEX_ROOT / 'cards' - -def file_for_card(card_name: str) -> pathlib.Path: - """Return the corresponding latex file name for a card""" - return pathlib.Path(f'{card_name.lower().replace(" ", "_")}.tex') - -def generate_card(card_name: str, card: MutableMapping): - """Generate a standalone tikz picture with the card data""" - card_content = "" - - card_file = file_for_card(card_name) - - for ext in ['.jpg', '.png']: - image_file = ASSETS_DIR / card_file.with_suffix(ext) - if image_file.exists(): - card_content += f'\\cardbackground{{{image_file.name}}}\n' - break - - card_content += f'\cardtype{card["type"].capitalize()}{"Token" if "token" in card else ""}{{{card_name}}}\n' - # card_content += f'\cardtitle{{{card_name}}}\n' - - if 'buy' in card: - card_content += f'\cardbuycost{{{card["buy"]}}}\n' - - if card['type'] == 'unit': - stats = '' - if 'ai' in card: - stats += f'AI: {card["ai"]}' - - if 'health' in card: - if stats: - stats += '\\\\ ' - stats += f'Health: {card["health"]}' - - if 'movement' in card: - if stats: - stats += '\\\\ ' - stats += f'Movement: {card["movement"]}' - - attack = card.get('attack', None) - if attack: - attack_sym = '\\faFistRaised' - if "Range" in attack: - attack_sym = '\\ding{246}' - # stats += f'\\\\ {attack_sym}: {attack}' - if stats: - stats += '\\\\ ' - stats += f'Attack: {attack}' - - if 'effect' in card or 'full_action' in card: - ability_block = "" - - effect = card.get('effect', None) - if effect: - ability_block += f'{effect}' - - full_action = card.get('full_action', None) - if full_action: - if ability_block: - ability_block += '\\\\ \\vspace{0.2cm} ' - ability_block += f'\\faRedo: {full_action}' - - card_content += f'\cardsplitcontent{{{stats}}}{{{ability_block}}}' - elif stats: - card_content += f'\cardcontent{{{stats}}}' - - - card_content += '\n' - - if 'upkeep' in card: - card_content += f'\cardplaycost{{{card["upkeep"]}}}' - - elif card['type'] == 'spell': - card_content += f'\cardcontent{{{card["effect"]}}}\n' - - elif card['type'] == 'artifact': - card_content += f'\cardcontent{{{card["effect"]}}}\n' - - elif card['type'] == 'equipment': - # card_content += f'\cardsplitcontent{{\\faRecycle: {card["durability"]}}}{{{card["effect"]}}}' - card_content += f'\cardsplitcontent{{Durability: {card["durability"]}}}{{{card["effect"]}}}\n' - else: - print(f'WARNING: unknown card type {card["type"]}!') - - if 'play' in card: - card_content += f'\cardplaycost{{{card["play"]}}}\n' - - if card['set'] in SET_SYMBOLS: - card_content += f'\cardmodule{{{SET_SYMBOLS[card["set"]]}}}' - else: - print(f'WARNING unknown set: {card["set"]}') - - with open(CARDS_DIR / card_file, 'w') as tex_file: - print(CARD_TEMPLATE.format(card_content), file=tex_file) - - -def main(): - """Generate one standalone tikz picture for each card in the input data""" - - parser = argparse.ArgumentParser(description='generate latex standalone cards') - parser.add_argument('data', help='ini file or directory containing ini files defining the cards to generate') - parser.add_argument('--latex-root', help='path to the latex root directory') - - args = parser.parse_args() - - if args.latex_root: - global LATEX_ROOT - LATEX_ROOT = pathlib.Path(args.latex_root) - global CARDS_DIR - CARDS_DIR = LATEX_ROOT / 'cards' - global ASSETS_DIR - ASSETS_DIR = LATEX_ROOT / '../assets' - - - data_files = [args.data] - data_path = pathlib.Path(args.data) - if data_path.is_dir(): - data_files = data_path.glob('*.ini') - - for f in data_files: - data = configparser.ConfigParser() - data.read(f) - - collection_inputs = "" - cards = [card for card in data if card != 'DEFAULT'] - for i, card in enumerate(cards): - card_content = data[card] - card_content = dict(card_content) - card_content['set'] = pathlib.Path(f).stem - generate_card(card, card_content) - collection_inputs += f'\\input{{cards/{file_for_card(card)}}}\n' - if i == 0 or i % 4 < 3: - collection_inputs += f'\\hspace{{5mm}}\n' - else: - collection_inputs += f'\\vspace{{5mm}}\n\n' - - collection_path = pathlib.Path(f) - with open(LATEX_ROOT / 'sets' / f'{collection_path.stem}.tex', 'w') as collection_file: - print(COLLECTION_TEMPLATE.format(collection_inputs), file=collection_file) - -if __name__ == '__main__': - main() |
