aboutsummaryrefslogtreecommitdiff
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
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
-rw-r--r--latex/Makefile15
-rw-r--r--latex/sets/base.tex (renamed from latex/base.tex)0
-rw-r--r--latex/sets/equipments.tex (renamed from latex/equipments.tex)0
-rw-r--r--latex/sets/magic.tex (renamed from latex/magic.tex)0
-rwxr-xr-xscripts/generate_latex.py76
5 files changed, 57 insertions, 34 deletions
diff --git a/latex/Makefile b/latex/Makefile
index 2dba3efa..76e74ab2 100644
--- a/latex/Makefile
+++ b/latex/Makefile
@@ -12,11 +12,15 @@ COMMON_TEX_FILES = libs.tex colors.tex tikzcards.tex
CARDS_DIR = cards
CARD_SOURCES = $(shell find $(CARDS_DIR) -name "*.tex")
+SETS_DIR = sets
+SETS_SOURCES = $(shell find $(SETS_DIR) -name "*.tex")
+
VERBOSE = @
PDF_DIR = ./build
-CARD_PDFS = $(notdir $(CARD_SOURCES:.tex=.pdf))
-CARD_PDFS_PREFIXED = $(addprefix $(PDF_DIR)/,$(CARD_PDFS))
+ALL_SOURCES = $(CARD_SOURCES) $(SETS_SOURCES)
+PDFS = $(notdir $(ALL_SOURCES:.tex=.pdf))
+PDFS_PREFIXED = $(addprefix $(PDF_DIR)/,$(PDFS))
CARD_PNGS = $(notdir $(CARD_SOURCES:.tex=.png))
CARD_PNGS_PREFIXED = $(addprefix $(PDF_DIR)/,$(CARD_PNGS))
@@ -26,7 +30,7 @@ MAKEFILE_LIST = Makefile
ASSETS_PATH = ./assets
PDFLATEX_ENV := TEXINPUTS=".:$(ASSETS_PATH):"
-all: $(PDF_DIR)/cards.pdf $(CARD_PDFS_PREFIXED) $(CARD_PNGS_PREFIXED)
+all: $(PDF_DIR)/cards.pdf $(PDFS_PREFIXED) $(CARD_PNGS_PREFIXED)
$(PDF_DIR)/cards.pdf: cards.tex $(CARD_SOURCES) $(COMMON_TEX_FILES) $(MAKEFILE_LIST)
@echo "building › › $@"
@@ -38,6 +42,11 @@ $(PDF_DIR)/%.pdf : $(CARDS_DIR)/%.tex $(COMMON_TEX_FILES) $(MAKEFILE_LIST)
@if test \( ! \( -d $(@D) \) \) ;then mkdir -p $(@D);fi
$(VERBOSE) $(PDFLATEX_ENV) $(PDFLATEX) --output-directory $(PDF_DIR) $(CARDS_DIR)/$*.tex
+$(PDF_DIR)/%.pdf : $(SETS_DIR)/%.tex $(CARD_SOURCES) $(COMMON_TEX_FILES) $(MAKEFILE_LIST)
+ @echo "card › $@"
+ @if test \( ! \( -d $(@D) \) \) ;then mkdir -p $(@D);fi
+ $(VERBOSE) $(PDFLATEX_ENV) $(PDFLATEX) --output-directory $(PDF_DIR) $^
+
$(PDF_DIR)/%.png : $(PDF_DIR)/%.pdf $(MAKEFILE_LIST)
@echo "png › $@"
@if test \( ! \( -d $(@D) \) \) ;then mkdir -p $(@D);fi
diff --git a/latex/base.tex b/latex/sets/base.tex
index 8419f84a..8419f84a 100644
--- a/latex/base.tex
+++ b/latex/sets/base.tex
diff --git a/latex/equipments.tex b/latex/sets/equipments.tex
index 75aa6b16..75aa6b16 100644
--- a/latex/equipments.tex
+++ b/latex/sets/equipments.tex
diff --git a/latex/magic.tex b/latex/sets/magic.tex
index d8dddcbd..d8dddcbd 100644
--- a/latex/magic.tex
+++ b/latex/sets/magic.tex
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()