aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fl.fischer@fau.de>2020-10-11 14:31:56 +0200
committerFlorian Fischer <florian.fl.fischer@fau.de>2020-10-18 14:32:19 +0200
commitc13b8861b2b831d4b1f251a307eb9f987bf887d8 (patch)
tree23388407370b97e30e45aabd220332392ea943d6 /scripts
parent53521f5ff633b0a0c5c608ccd4164ecf74eff7a2 (diff)
downloadmuhqs-game-c13b8861b2b831d4b1f251a307eb9f987bf887d8.tar.gz
muhqs-game-c13b8861b2b831d4b1f251a307eb9f987bf887d8.zip
add ability to generate all cards defined in a data dir and build sets
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/generate_latex.py76
1 files changed, 45 insertions, 31 deletions
diff --git a/scripts/generate_latex.py b/scripts/generate_latex.py
index f9f6eb21..cabed084 100755
--- a/scripts/generate_latex.py
+++ b/scripts/generate_latex.py
@@ -46,7 +46,7 @@ CARD_TEMPLATE = \
\\end{{document}}
"""
-SET_SYMBOLS = {'base': 'base', 'magic': 'magic', 'equipments': 'equipments'}
+SET_SYMBOLS = {'base': 'base', 'magic': 'magic', 'equipments': 'equipments', 'nautics': 'nautics', 'misc': ''}
LATEX_ROOT = pathlib.Path(os.getcwd())
ASSETS_DIR = LATEX_ROOT / 'assets'
@@ -75,11 +75,14 @@ def generate_card(card_name: str, card: MutableMapping):
card_content += f'\cardbuycost{{{card["buy"]}}}\n'
if card['type'] == 'unit':
- health = card['health']
- movement = card['movement']
+ stats = ''
+ if 'health' in card:
+ stats += f'Health: {card["health"]}'
- # stats = f'\\faHeart: {health}\\\\ \\faShoePrints: {movement}'
- stats = f'Health: {health}\\\\ Movement: {movement}'
+ if 'movement' in card:
+ if stats:
+ stats += '\\\\ '
+ stats += f'Movement: {card["movement"]}'
attack = card.get('attack', None)
if attack:
@@ -87,7 +90,9 @@ def generate_card(card_name: str, card: MutableMapping):
if "Range" in attack:
attack_sym = '\\ding{246}'
# stats += f'\\\\ {attack_sym}: {attack}'
- stats += f'\\\\ Attack: {attack}'
+ if stats:
+ stats += '\\\\ '
+ stats += f'Attack: {attack}'
if 'effect' in card or 'full_action' in card:
ability_block = ""
@@ -103,28 +108,30 @@ def generate_card(card_name: str, card: MutableMapping):
ability_block += f'\\faRedo: {full_action}'
card_content += f'\cardsplitcontent{{{stats}}}{{{ability_block}}}'
- else:
+ elif stats:
card_content += f'\cardcontent{{{stats}}}'
card_content += '\n'
- card_content += f'\cardplaycost{{{card["upkeep"]}}}'
+ if 'upkeep' in card:
+ card_content += f'\cardplaycost{{{card["upkeep"]}}}'
+
elif card['type'] == 'spell':
card_content += f'\cardcontent{{{card["effect"]}}}\n'
- card_content += f'\cardplaycost{{{card["play"]}}}\n'
elif card['type'] == 'artifact':
card_content += f'\cardcontent{{{card["effect"]}}}\n'
- card_content += f'\cardplaycost{{{card["play"]}}}\n'
elif card['type'] == 'equipment':
# card_content += f'\cardsplitcontent{{\\faRecycle: {card["durability"]}}}{{{card["effect"]}}}'
card_content += f'\cardsplitcontent{{Durability: {card["durability"]}}}{{{card["effect"]}}}\n'
- card_content += f'\cardplaycost{{{card["play"]}}}\n'
else:
print('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:
@@ -138,7 +145,7 @@ 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('datafile', help='ini file defining the card to generate')
+ 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()
@@ -151,25 +158,32 @@ def main():
global ASSETS_DIR
ASSETS_DIR = LATEX_ROOT / 'assets'
- data = configparser.ConfigParser()
- data.read(args.datafile)
-
- 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(args.datafile).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(args.datafile)
- with open(LATEX_ROOT / f'{collection_path.stem}.tex', 'w') as collection_file:
- print(COLLECTION_TEMPLATE.format(collection_inputs), file=collection_file)
+
+ 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()