From 05bb67851a1b6cca0e9fe71a988e36d5b3fe3437 Mon Sep 17 00:00:00 2001 From: Louis Burke Date: Thu, 11 Apr 2019 23:30:44 -0400 Subject: [PATCH] Updated build system. --- .gitignore | 2 ++ Makefile | 67 ++++++++++---------------------------- cards.sql | 32 +++++++++--------- cardtopng.sh | 13 ++------ images/deck/token.png | Bin 328 -> 0 bytes scripts/decklist.sh | 5 +++ scripts/generate_cards.sh | 46 ++++++++++++++++++++++++++ scripts/list_cards.sql | 21 ++++++++++++ 8 files changed, 109 insertions(+), 77 deletions(-) delete mode 100644 images/deck/token.png create mode 100755 scripts/decklist.sh create mode 100755 scripts/generate_cards.sh create mode 100644 scripts/list_cards.sql diff --git a/.gitignore b/.gitignore index 920ddff..b5ded4a 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,5 @@ changelist.txt outputs/** Console. Python-Fu +Makefile.deps +generated/** diff --git a/Makefile b/Makefile index 835c89f..88b464c 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,9 @@ .PHONY: all clean check printrun cardrun .PRECIOUS: %.pdf %.png +GENERATED_DIR?=generated +SENTINEL=$(GENERATED_DIR)/.sentinel + default: check decks all: check decks export @@ -10,7 +13,7 @@ XELATEX:=$(shell command -v xelatex 2> /dev/null) PDFTOPPM:=$(shell command -v pdftoppm 2> /dev/null) PDFUNITE:=$(shell command -v pdfunite 2> /dev/null) -check: +check: $(SENTINEL) ifndef CONVERT $(error "convert not found. Please install imagemagick") endif @@ -24,26 +27,15 @@ ifndef PDFUNITE $(error "pdfunite not found. Please install poppler") endif -SHORT_DECKLIST=$(shell ls cards/decks | grep -v run | sed -e 's/.txt//') -DECKLIST=$(SHORT_DECKLIST) printrun cardrun -DEPENDLIST=$(DECKLIST:%=%.d) +RAW_DECK_LIST=$(shell ./scripts/decklist.sh) +DECK_LIST=$(RAW_DECK_LIST:%=$(GENERATED_DIR)/%) +DECK_DEPENDENCIES=$(DECK_LIST:%=%.d) -outputs/printrun.txt: $(SHORT_DECKLIST) - cat $^ | sort > $@ +$(SENTINEL): cards.sql + ./scripts/generate_cards.sh $(GENERATED_DIR) + touch $@ -outputs/cardrun.txt: $(SHORT_DECKLIST) - cat $^ | sort -u > $@ - -outputs/%run.d: cards/decks/%run.txt - echo -n 'outputs/$*run.pdf:' > $@ - tr '\n' ' ' < $< >> $@ - echo -e '\n\tpdfunite $$+ $$@' >> $@ - cat $< | sort | uniq -c | sed -e 's@\([[:digit:]]\+\) \(.\+/\)*\(.\+\).pdf@export: outputs/$*run/\3[\1].png@' >> $@ - cat $< | sort | uniq -c | sed -e 's@\([[:digit:]]\+\) \(.\+/\)*\(.\+\).pdf@outputs/$*run/\3[\1].png: \2\3[\1].png; cp \2\3[\1].png outputs/$*run/\3[\1].png@' >> $@ - mkdir -p outputs/$*run - echo 'decks: outputs/$*run.pdf' >> $@ - -outputs/%.d: cards/decks/%.txt +%.d: %.list echo -n 'outputs/$*.pdf:' > $@ tr '\n' ' ' < $< >> $@ echo -e '\n\tpdfunite $$+ $$@' >> $@ @@ -51,9 +43,11 @@ outputs/%.d: cards/decks/%.txt cat $< | sort | uniq -c | sed -e 's@\([[:digit:]]\+\) \(.\+/\)*\(.\+\).pdf@outputs/$*/\3[\1].png: \2\3[\1].png; cp \2\3[\1].png outputs/$*/\3[\1].png@' >> $@ mkdir -p outputs/$* echo 'decks: outputs/$*.pdf' >> $@ - echo 'short: outputs/$*.pdf' >> $@ -include $(DECKLIST:%=outputs/%.d) +Makefile.deps: $(DECK_DEPENDENCIES) $(SENTINEL) + cat $^ > $@ + +-include Makefile.deps outputs/iditaboard[face].png: iditaboard.pdf $(PDFTOPPM) -scale-to-x 4875 -scale-to-y 3075 -png $< > $@ @@ -61,44 +55,16 @@ outputs/iditaboard[face].png: iditaboard.pdf outputs/cardback.png: cardback.png cp $< $@ -outputs/stretchback1.png: cardback.png - convert $< -fuzz 50% -fill \#7FDF7D -opaque white tmp.png - convert tmp.png -fuzz 50% -fill \#CF5FCF -opaque black $@ - rm tmp.png - -outputs/stretchback2.png: cardback.png - convert $< -fuzz 50% -fill \#9FB76F -opaque white tmp.png - convert tmp.png -fuzz 50% -fill \#FF5F5F -opaque black $@ - rm tmp.png - -outputs/stretchback3.png: cardback.png - convert $< -fuzz 50% -fill \#5F5FFF -opaque white tmp.png - convert tmp.png -fuzz 50% -fill \#9F9F9F -opaque black $@ - rm tmp.png - -outputs/stretchback4.png: cardback.png - convert $< -fuzz 50% -fill \#3FDFDF -opaque white tmp.png - convert tmp.png -fuzz 50% -fill \#DFDF3F -opaque black $@ - rm tmp.png - -outputs/box[top].png: box_top.png - cp $< $@ - -outputs/box[bottom].png: box_bottom.png - cp $< $@ - -export: outputs/stretchback1.png outputs/stretchback2.png outputs/stretchback3.png outputs/stretchback4.png export: outputs/cardback.png -export: outputs/box[top].png outputs/box[bottom].png export: outputs/iditaboard[face].png export: instructions.pdf %.pdf: %.tex $(XELATEX) -interaction=batchmode -halt-on-error --shell-escape --output-directory=$(@D) $< - echo "$@" >> changelist.txt rm $*.aux rm $*.log +# TODO: Clean this up! instructions.pdf: instructions.tex cards/dogs/husky0.pdf cards/attachments/armour0.pdf cards/food/breakfast0.pdf cards/food/lunch0.pdf cards/sleds/repair_sled0.pdf cards/sleds/upgrade_sled0.pdf cards/movement/move0.pdf cards/food/dinner0.pdf cards/personal/first_aid0.pdf cards/dogs/good_dog0.pdf cards/util/vigilance.pdf cards/damaged.pdf cards/util/daylight_savings_time.pdf cards/util/sleeping_bag.pdf cards/sleds/new_sled.pdf cards/sleds/stop_and_shop.pdf cards/sleds/satiated.pdf cards/personal/ibuprofin.pdf cards/util/utility_knife.pdf $(XELATEX) -interaction=batchmode -halt-on-error --shell-escape --output-directory=$(@D) $< $(XELATEX) -interaction=batchmode -halt-on-error --shell-escape --output-directory=$(@D) $< # Twice, for TOC @@ -114,6 +80,7 @@ clean: -find outputs -name '*.d' -delete -find . -name '*.aux' -delete -find . -name '*.log' -delete + -rm -rf $(GENERATED_DIR) print-% : ; @echo $* = $($*) diff --git a/cards.sql b/cards.sql index 70a9343..33ec6bc 100644 --- a/cards.sql +++ b/cards.sql @@ -1,24 +1,24 @@ PRAGMA foreign_keys=OFF; BEGIN TRANSACTION; CREATE TABLE Types (id INTEGER PRIMARY KEY, Name TEXT); -INSERT INTO Types VALUES(1,'Attachment'); -INSERT INTO Types VALUES(2,'Dog'); -INSERT INTO Types VALUES(3,'Food'); -INSERT INTO Types VALUES(4,'Movement'); -INSERT INTO Types VALUES(5,'Personal'); -INSERT INTO Types VALUES(6,'Sled'); -INSERT INTO Types VALUES(7,'Utility'); -INSERT INTO Types VALUES(8,'Token'); +INSERT INTO Types VALUES(1,'attachment'); +INSERT INTO Types VALUES(2,'dog'); +INSERT INTO Types VALUES(3,'food'); +INSERT INTO Types VALUES(4,'movement'); +INSERT INTO Types VALUES(5,'personal'); +INSERT INTO Types VALUES(6,'sled'); +INSERT INTO Types VALUES(7,'utility'); +INSERT INTO Types VALUES(8,'damage'); CREATE TABLE Decks (id INTEGER PRIMARY KEY, Name TEXT); -INSERT INTO Decks VALUES(1,'Starter1'); -INSERT INTO Decks VALUES(2,'Starter2'); -INSERT INTO Decks VALUES(3,'Starter3'); -INSERT INTO Decks VALUES(4,'Starter4'); -INSERT INTO Decks VALUES(10,'Survival'); -INSERT INTO Decks VALUES(11,'Race'); -INSERT INTO Decks VALUES(20,'Legendary'); -INSERT INTO Decks VALUES(21,'Damage'); +INSERT INTO Decks VALUES(1,'starter1'); +INSERT INTO Decks VALUES(2,'starter2'); +INSERT INTO Decks VALUES(3,'starter3'); +INSERT INTO Decks VALUES(4,'starter4'); +INSERT INTO Decks VALUES(10,'survival'); +INSERT INTO Decks VALUES(11,'race'); +INSERT INTO Decks VALUES(20,'legendary'); +INSERT INTO Decks VALUES(21,'damage'); CREATE TABLE Effects (id INTEGER PRIMARY KEY, Name TEXT, Command TEXT); INSERT INTO Effects VALUES(1,'Day Draw','\daydraw{#}'); diff --git a/cardtopng.sh b/cardtopng.sh index 58d47ba..a986e7d 100755 --- a/cardtopng.sh +++ b/cardtopng.sh @@ -5,14 +5,5 @@ OUTPUT=$1 INTERMEDIATE=$(echo "$1" | sed 's/\[.*\]\..*//')-raw.png PDFNAME=$(echo "$1" | sed 's/\[.*\]\..*//').pdf -# Determine card size -#if grep -q 750x1050 <<<$(identify $INTERMEDIATE); then -if [ "${PDFNAME/stretch}" = "$PDFNAME" ]; then - # Poker Deck - pdftoppm -scale-to-x 750 -scale-to-y 1050 -png $PDFNAME > $INTERMEDIATE - convert $INTERMEDIATE -set option:distort:viewport 825x1125-37-37 -virtual-pixel Edge -distort SRT 0 +repage $OUTPUT -else - # Mini Deck - pdftoppm -scale-to-x 750 -scale-to-y 525 -png $PDFNAME > $INTERMEDIATE - convert $INTERMEDIATE -set option:distort:viewport 825x600-37-37 -virtual-pixel Edge -distort SRT 0 +repage $OUTPUT -fi +pdftoppm -scale-to-x 750 -scale-to-y 1050 -png $PDFNAME > $INTERMEDIATE +convert $INTERMEDIATE -set option:distort:viewport 825x1125-37-37 -virtual-pixel Edge -distort SRT 0 +repage $OUTPUT diff --git a/images/deck/token.png b/images/deck/token.png deleted file mode 100644 index aec33c40d3bec26ed88249470a599c34e950a508..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 328 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPthlseUXi`H)IZ#M8GbEzKIX^cyHLnE7WngeFN=+aSW-r_4bxGUxNY(1n;{PY%%kpct>Oii>30?@*x1Vj8 zv!zbqBWvPpb)$TNZPhAYMU>h)I^Jv*)Y{E;gZ&1l6}JUnG;3G?zbjF9IhlZFHKbl} mJHb;RRv=X(AHb%xbs6_WC$U5qmv28n7J0h*xvX> "$PARENT_DIR/$deckname.list" + + cat <"$fname" +\\documentclass{iditacard} + +\\cardtype{$typename} +\\rarity{$rarity} +\\deck{$deckname} + +\\begin{document} +\\begin{card} + \\art{$image} +EOF + + [ "$energy" -gt 0 ] || echo " \\energy{$energy}" >>"$fname" + [ "$health" -gt 0 ] || echo " \\health{$health}" >>"$fname" + [ "$risk" -gt 0 ] || echo " \\risk{$risk}" >>"$fname" + + cat <>"$fname" + \\name{$name} + \\text{$effects} + \\flava{$flavour} + \\type{$typename} +\\end{card} +\\end{document} +EOF +done diff --git a/scripts/list_cards.sql b/scripts/list_cards.sql new file mode 100644 index 0000000..3e239a8 --- /dev/null +++ b/scripts/list_cards.sql @@ -0,0 +1,21 @@ +SELECT + Cards.Name, + Cards.Energy, + Cards.Health, + Cards.Risk, + Cards.Flavour, + Cards.Image, + Types.Name, + group_concat(Effects.Command, '\\'), + Decks.Name, + Deck_Cards.Amount +FROM Cards + JOIN Types ON Types.id = Cards.Type + CROSS JOIN Card_Effects ON Card_Effects.Card = Cards.id + JOIN Effects ON Effects.id = Card_Effects.Effect + CROSS JOIN Deck_Cards ON Deck_Cards.Card = Cards.id + JOIN Decks ON Deck_Cards.Deck = Decks.id +GROUP BY + Cards.id, + Decks.id +ORDER BY Cards.Name;