Preservation commit before deciding on a data format
This commit is contained in:
parent
9089c78aec
commit
33db092023
28
Makefile
28
Makefile
|
@ -8,25 +8,9 @@ default: check decks
|
|||
all: check decks export
|
||||
prototype: mini
|
||||
|
||||
# Check existence of necessary executables
|
||||
CONVERT:=$(shell command -v convert 2> /dev/null)
|
||||
XELATEX:=$(shell command -v xelatex 2> /dev/null)
|
||||
PDFTOPPM:=$(shell command -v pdftoppm 2> /dev/null)
|
||||
PDFUNITE:=$(shell command -v pdfunite 2> /dev/null)
|
||||
ASSET_TOML=assets.toml
|
||||
|
||||
check: $(SENTINEL)
|
||||
ifndef CONVERT
|
||||
$(error "convert not found. Please install imagemagick")
|
||||
endif
|
||||
ifndef XELATEX
|
||||
$(error "xelatex not found. Please install xetex")
|
||||
endif
|
||||
ifndef PDFTOPPM
|
||||
$(error "pdftoppm not found. Please install poppler")
|
||||
endif
|
||||
ifndef PDFUNITE
|
||||
$(error "pdfunite not found. Please install poppler")
|
||||
endif
|
||||
include rules/*.mk
|
||||
|
||||
RAW_DECK_LIST=$(shell ./scripts/decklist.sh) first second third
|
||||
DECK_LIST=$(RAW_DECK_LIST:%=$(GENERATED_DIR)/%)
|
||||
|
@ -59,13 +43,7 @@ $(SENTINEL): cards.sql
|
|||
Makefile.deps: $(SENTINEL) $(DECK_DEPENDENCIES)
|
||||
cat $^ > $@
|
||||
|
||||
include Makefile.deps
|
||||
|
||||
outputs/iditaboard[face].png: iditaboard.pdf
|
||||
$(PDFTOPPM) -scale-to-x 4875 -scale-to-y 3075 -png $< > $@
|
||||
|
||||
outputs/cardback.png: cardback.png
|
||||
cp $< $@
|
||||
#include Makefile.deps
|
||||
|
||||
export: outputs/cardback.png
|
||||
export: outputs/iditaboard[face].png
|
||||
|
|
44
assets.toml
Normal file
44
assets.toml
Normal file
|
@ -0,0 +1,44 @@
|
|||
# This file describes the assets of iditacards
|
||||
|
||||
# It is processed to produce the various source files that are then compiled
|
||||
# into assets
|
||||
|
||||
# NOTE: [a. b] indicates that the object will be processed through the mako
|
||||
# template templates/a.mako and output to generated/b. (templates/ and
|
||||
# generated/ specified by arguments)
|
||||
|
||||
[card. "a_hat.tex"]
|
||||
name = "A Hat"
|
||||
costs.energy = 2
|
||||
costs.health = 2
|
||||
effects = { daydraw = "+1" }
|
||||
image = "hat"
|
||||
type = "attachment"
|
||||
flavour = "I bet its a valve hat."
|
||||
|
||||
[card. "dog_chow.tex"]
|
||||
name = "Dog Chow"
|
||||
costs.energy = 3
|
||||
cards.health = 3
|
||||
effects = { speed = "+1" }
|
||||
image = "dog_chow"
|
||||
type = "attachment"
|
||||
flavour = "A hungry dog is a slow dog."
|
||||
|
||||
[card. "good_dog.tex"]
|
||||
name = "Good Dog"
|
||||
costs.energy = 3
|
||||
costs.health = 3
|
||||
effects = { daydraw = "+1" }
|
||||
image = "good_dog"
|
||||
type = "dog"
|
||||
flavour = "Good boy."
|
||||
|
||||
[deck. "starter1.mk"]
|
||||
name = "starter1"
|
||||
[deck. "starter1.mk". contents]
|
||||
"A hat" = 1
|
||||
"Breakfast" = 2
|
||||
|
||||
|
||||
|
641
assets.yaml
Normal file
641
assets.yaml
Normal file
|
@ -0,0 +1,641 @@
|
|||
# This file describes the assets of iditacards
|
||||
# vim: fdm=marker
|
||||
|
||||
# It is processed to produce various source files that are then compiled into
|
||||
# assets
|
||||
|
||||
# TODO: Change the system to be more like the toml. Just have a: b: generate
|
||||
# b using a.mako, but a: -b does not. (except unlike l4den, yaml can't mix
|
||||
# arrays and objects, so maybe use _: -b -c -...?)
|
||||
|
||||
# Any object with an "output" key will be processed to produce said output by
|
||||
# using its "template" key as a mako template and passing "data" is data.
|
||||
|
||||
cards: # {{{
|
||||
- &a_hat
|
||||
name: 'A Hat'
|
||||
costs:
|
||||
energy: 2
|
||||
health: 2
|
||||
effects:
|
||||
- '\daydraw{+1}'
|
||||
image: hat
|
||||
type: attachment
|
||||
flavour: 'I bet its a valve hat.'
|
||||
|
||||
- &dog_chow
|
||||
name: 'Dog Chow'
|
||||
costs:
|
||||
energy: 3
|
||||
health: 3
|
||||
effects:
|
||||
- '\speed{+1}'
|
||||
image: dog_chow
|
||||
type: attachment
|
||||
flavour: 'A hungry dog is a slow dog.'
|
||||
|
||||
- &good_dog
|
||||
name: 'Good Dog'
|
||||
costs:
|
||||
energy: 3
|
||||
health: 3
|
||||
effects:
|
||||
- '\daydraw{+1}'
|
||||
image: good_dog
|
||||
type: dog
|
||||
flavour: 'Good boy.'
|
||||
|
||||
- &husky
|
||||
name: 'Husky'
|
||||
costs:
|
||||
energy: 2
|
||||
health: 2
|
||||
risk: 2
|
||||
effects:
|
||||
- '\daydraw{+1}'
|
||||
- '\speed{+1}'
|
||||
image: husky
|
||||
type: dog
|
||||
flavour: 'Standard mushing fare.'
|
||||
|
||||
- &wheel_dog
|
||||
name: 'Wheel Dog'
|
||||
costs:
|
||||
energy: 3
|
||||
health: 3
|
||||
effects:
|
||||
- '\speed{+1}'
|
||||
- '\discardonkill'
|
||||
- '\inplayatstart'
|
||||
image: wheel_dog
|
||||
type: dog
|
||||
flavour: 'The dog right in front of the sled. Strong and steady.'
|
||||
|
||||
- &breakfast
|
||||
name: 'Breakfast'
|
||||
costs:
|
||||
health: 3
|
||||
effects:
|
||||
- '\draw{3}'
|
||||
image: breakfast
|
||||
type: food
|
||||
flavour: 'The most important meal of the day.'
|
||||
|
||||
- &lunch
|
||||
name: 'Lunch'
|
||||
costs:
|
||||
energy: 3
|
||||
effects:
|
||||
- '\draw{3}'
|
||||
image: lunch
|
||||
type: food
|
||||
flavour: 'What about second breakfast?'
|
||||
|
||||
- &dinner
|
||||
name: 'Dinner'
|
||||
costs:
|
||||
energy: 2
|
||||
health: 2
|
||||
effects:
|
||||
- '\draw{7}'
|
||||
image: dinner
|
||||
type: food
|
||||
flavour: 'I hope you like salted fish.'
|
||||
|
||||
- &move
|
||||
name: 'Move'
|
||||
effects:
|
||||
- '\move{1}'
|
||||
image: move
|
||||
type: movement
|
||||
flavour: 'Just another day.'
|
||||
|
||||
- &mush
|
||||
name: 'Mush'
|
||||
costs:
|
||||
energy: 2
|
||||
health: 2
|
||||
risk: 1
|
||||
effects:
|
||||
- '\move{10}'
|
||||
image: mush
|
||||
type: movement
|
||||
flavour: "Comes from the french word ``Marche''."
|
||||
|
||||
- &first_aid
|
||||
name: First Aid
|
||||
costs:
|
||||
energy: 2
|
||||
health: 2
|
||||
effects:
|
||||
- '\see{3}'
|
||||
- '\destroy{1}'
|
||||
image: first_aid
|
||||
type: personal
|
||||
flavour: 'Reduces swelling.'
|
||||
|
||||
- &grandma_soup
|
||||
name: Grandma Soup
|
||||
costs:
|
||||
energy: 1
|
||||
health: 2
|
||||
risk: 1
|
||||
effects:
|
||||
- '\see{10}'
|
||||
- '\destroy{2}'
|
||||
image: grandma_soup
|
||||
type: personal
|
||||
flavour: 'Cures what ails you.'
|
||||
|
||||
- &repair_sled
|
||||
name: Repair Sled
|
||||
costs:
|
||||
energy: 1
|
||||
health: 3
|
||||
effects:
|
||||
- '\supply{1}'
|
||||
- '\take{2}'
|
||||
image: repair_sled
|
||||
type: sled
|
||||
flavour: "It doesn't need to be pretty. It just has to work."
|
||||
|
||||
- &upgrade_sled
|
||||
name: Upgrade Sled
|
||||
costs:
|
||||
energy: 2
|
||||
health: 2
|
||||
effects:
|
||||
- '\supply{3}'
|
||||
- '\take{1}'
|
||||
image: upgrade_sled
|
||||
type: sled
|
||||
flavour: 'You have to keep your ride in top shape.'
|
||||
|
||||
- &buffer_panel
|
||||
name: Buffer Panel
|
||||
costs:
|
||||
energy: 2
|
||||
health: 2
|
||||
effects:
|
||||
- '\immortal'
|
||||
- '\safepass'
|
||||
image: buffer_panel
|
||||
type: attachment
|
||||
flavour: 'Did the primary buffer panel just fall of my gorram ship for no apparent reason?'
|
||||
|
||||
- &nuclear_reactor
|
||||
name: Nuclear Reactor
|
||||
costs:
|
||||
energy: 2
|
||||
health: 2
|
||||
effects:
|
||||
- '\speed{+5}'
|
||||
- '\passdie'
|
||||
image: nuclear_reactor
|
||||
type: attachment
|
||||
flavour: 'What could go wrong?'
|
||||
|
||||
- &engineer_dog
|
||||
name: Engineer Dog
|
||||
costs:
|
||||
energy: 3
|
||||
health: 5
|
||||
risk: 1
|
||||
effects:
|
||||
- '\speed{$\times 2$}'
|
||||
- '\nohold'
|
||||
image: engineer_dog
|
||||
type: dog
|
||||
flavour: 'Nails and Gears.'
|
||||
|
||||
- &moose
|
||||
name: Moose
|
||||
costs:
|
||||
energy: 5
|
||||
risk: 3
|
||||
effects:
|
||||
- '\speed{+5}'
|
||||
- '\immortal'
|
||||
image: moose
|
||||
type: dog
|
||||
flavour: 'Majestic creatures. Hard to tame.'
|
||||
|
||||
- &waffle
|
||||
name: Waffle
|
||||
effects:
|
||||
- '\draw{2}'
|
||||
image: waffles
|
||||
type: food
|
||||
flavour: 'Waffles are \textbf{delicious}.'
|
||||
|
||||
- &whale_meat
|
||||
name: Whale Meat
|
||||
costs:
|
||||
energy: 1
|
||||
health: 1
|
||||
effects:
|
||||
- '\draw{5}'
|
||||
- '\nohypothermia'
|
||||
image: whale_meat
|
||||
type: food
|
||||
flavour: "It's like rubber."
|
||||
|
||||
- &hitch_a_ride
|
||||
name: Hitch a Ride
|
||||
costs:
|
||||
energy: 1
|
||||
effects:
|
||||
- '\move{6}'
|
||||
- '\damage{1}'
|
||||
image: hitch_a_ride
|
||||
type: movement
|
||||
flavour: 'Probably not in the spirit of the race.'
|
||||
|
||||
- &tactical_play
|
||||
name: Tactical Play
|
||||
costs:
|
||||
energy: 1
|
||||
risk: 1
|
||||
effects:
|
||||
- '\move{0}'
|
||||
- '\doubledistance'
|
||||
image: tactical_play
|
||||
type: movement
|
||||
flavour: 'Make the most of it.'
|
||||
|
||||
- &meditate
|
||||
name: Meditate
|
||||
costs:
|
||||
energy: 1
|
||||
health: 1
|
||||
effects:
|
||||
- '\see{all}'
|
||||
- '\destroy{0}'
|
||||
image: meditate
|
||||
type: personal
|
||||
flavour: 'It \textit{is} just sitting.'
|
||||
|
||||
- &diamorphine
|
||||
name: Diamorphine
|
||||
costs:
|
||||
energy: 1
|
||||
health: 1
|
||||
risk: 1
|
||||
effects:
|
||||
- '\see{all}'
|
||||
- '\destroy{all}'
|
||||
image: diamorphine
|
||||
type: personal
|
||||
flavour: 'Highly addicting.'
|
||||
|
||||
- &desperate_times
|
||||
name: Desperate Times
|
||||
costs:
|
||||
energy: all
|
||||
effects:
|
||||
- '\supply{10}'
|
||||
- '\take{5}'
|
||||
image: desparate_times
|
||||
type: sled
|
||||
flavour: 'Desperate measures hotline, how may I help you?'
|
||||
|
||||
- &lead_sled
|
||||
name: Lead Sled
|
||||
costs:
|
||||
energy: 1
|
||||
health: 1
|
||||
risk: 1
|
||||
effects:
|
||||
- '\supply{10}'
|
||||
- '\take{10}'
|
||||
image: lead_sled
|
||||
type: sled
|
||||
flavour: "At least it's not a zeppelin."
|
||||
|
||||
- &damaged
|
||||
name: Damaged
|
||||
costs:
|
||||
energy: 1
|
||||
health: 1
|
||||
effects:
|
||||
- '\damagetext'
|
||||
image: damaged
|
||||
type: damage
|
||||
flavour: 'You have been hurt.'
|
||||
|
||||
- &dog_shoes
|
||||
name: Dog Shoes
|
||||
costs:
|
||||
energy: 2
|
||||
health: 3
|
||||
effects:
|
||||
- '\speed{+2}'
|
||||
image: dog_shoes
|
||||
type: attachment
|
||||
flavour: 'Dogs look cute in shoes.'
|
||||
|
||||
- &squirrel
|
||||
name: Squirrel
|
||||
costs:
|
||||
energy: 2
|
||||
health: 2
|
||||
risk: 1
|
||||
effects:
|
||||
- '\speed{+3}'
|
||||
image: squirrel
|
||||
type: attachment
|
||||
flavour: 'Dogs \emph{hate} squirrels.'
|
||||
|
||||
- &tiara
|
||||
name: Tiara
|
||||
costs:
|
||||
energy: 2
|
||||
health: 2
|
||||
risk: 1
|
||||
effects:
|
||||
- '\daydraw{+1}'
|
||||
- '\speed{+1}'
|
||||
image: tiara
|
||||
type: attachment
|
||||
flavour: 'Makes the dog feel special.'
|
||||
|
||||
- &bear
|
||||
name: Bear
|
||||
costs:
|
||||
energy: 2
|
||||
health: 2
|
||||
risk: 2
|
||||
effects:
|
||||
- '\speed{+5}'
|
||||
image: bear
|
||||
type: dog
|
||||
flavour: 'In hindsight, not the best idea.'
|
||||
|
||||
- &big_dog
|
||||
name: Big Dog
|
||||
costs:
|
||||
energy: 2
|
||||
health: 2
|
||||
effects:
|
||||
- '\speed{+3}'
|
||||
image: big_dog
|
||||
type: dog
|
||||
flavour: "He's not red though."
|
||||
|
||||
- &greyhound
|
||||
name: Greyhound
|
||||
costs:
|
||||
risk: 2
|
||||
effects:
|
||||
- '\speed{+3}'
|
||||
- '\nohold'
|
||||
image: greyhound
|
||||
type: dog
|
||||
flavour: 'What happens when you mix the colours on a husky? You get a grey hound.'
|
||||
|
||||
- &malamute
|
||||
name: Malamute
|
||||
costs:
|
||||
energy: 2
|
||||
health: 2
|
||||
risk: 1
|
||||
effects:
|
||||
- '\daydraw{+2}'
|
||||
image: malamute
|
||||
type: dog
|
||||
flavour: 'A common sled hauling breed.'
|
||||
|
||||
- &problem_dog
|
||||
name: Problem Dog
|
||||
costs:
|
||||
energy: 1
|
||||
health: 1
|
||||
risk: 1
|
||||
effects:
|
||||
- '\daydraw{-1}'
|
||||
- '\speed{+3}'
|
||||
image: problem_dog
|
||||
type: dog
|
||||
flavour: "I swear, if you weren't so fast."
|
||||
|
||||
- &bison
|
||||
name: Bison
|
||||
costs:
|
||||
energy: 2
|
||||
risk: 1
|
||||
effects:
|
||||
- '\draw{5}'
|
||||
image: bison
|
||||
type: food
|
||||
flavour: "It's very lean."
|
||||
|
||||
- &poutine
|
||||
name: Poutine
|
||||
costs:
|
||||
health: 2
|
||||
effects:
|
||||
- '\draw{1}'
|
||||
- '\nohypothermia'
|
||||
image: poutine
|
||||
type: food
|
||||
flavour: 'The great Canadian carb!'
|
||||
|
||||
- &venison
|
||||
name: Venison
|
||||
costs:
|
||||
health: 2
|
||||
effects:
|
||||
- '\draw{3}'
|
||||
image: venison
|
||||
type: food
|
||||
flavour: 'Better than breakfast.'
|
||||
|
||||
- &steak
|
||||
name: Steak
|
||||
effects:
|
||||
- '\draw{1}'
|
||||
image: steak
|
||||
type: food
|
||||
flavour: "Well aren't you fancy."
|
||||
|
||||
- &jerky
|
||||
name: Jerky
|
||||
costs:
|
||||
energy: 1
|
||||
health: 1
|
||||
effects:
|
||||
- '\draw{3}'
|
||||
image: jerky
|
||||
type: food
|
||||
flavour: 'Watch your sodium!'
|
||||
|
||||
- &midnight_sun
|
||||
name: Midnight Sun
|
||||
costs:
|
||||
energy: 1
|
||||
health: 1
|
||||
risk: 1
|
||||
effects:
|
||||
- '\move{10}'
|
||||
image: midnight_sun
|
||||
type: movement
|
||||
flavour: 'Strange things are done in the midnight sun.'
|
||||
|
||||
- &push
|
||||
name: Push
|
||||
costs:
|
||||
energy: 1
|
||||
effects:
|
||||
- '\move{5}'
|
||||
image: push
|
||||
type: movement
|
||||
flavour: 'Not a full mush, but still putting in some effort.'
|
||||
|
||||
- &slow_and_steady
|
||||
name: Slow and Steady
|
||||
effects:
|
||||
- '\draw{1}'
|
||||
- '\move{0}'
|
||||
image: slow_and_steady
|
||||
type: movement
|
||||
flavour: 'Maybe a bit too slow.'
|
||||
|
||||
- &band_aid
|
||||
name: Band Aid
|
||||
effects:
|
||||
- '\see{1}'
|
||||
- '\destroy{1}'
|
||||
image: band_aid
|
||||
type: personal
|
||||
flavour: 'Not much.'
|
||||
|
||||
- &bandage
|
||||
name: Bandage
|
||||
costs:
|
||||
energy: 1
|
||||
effects:
|
||||
- '\see{5}'
|
||||
- '\destroy{1}'
|
||||
image: bandage
|
||||
type: personal
|
||||
flavour: 'Make sure you wrap it tight.'
|
||||
|
||||
- &brandy
|
||||
name: Brandy
|
||||
costs:
|
||||
risk: 1
|
||||
effects:
|
||||
- '\see{5}'
|
||||
- '\destroy{1}'
|
||||
image: brandy
|
||||
type: personal
|
||||
flavour: 'Brought by a St.\ Bernard'
|
||||
|
||||
- &caffeine
|
||||
name: Caffeine
|
||||
costs:
|
||||
health: 2
|
||||
effects:
|
||||
- '\draw{1}'
|
||||
- '\see{2}'
|
||||
- '\destroy{1}'
|
||||
image: caffeine
|
||||
type: personal
|
||||
flavour: 'The greatest addiction ever.'
|
||||
|
||||
- &improvise
|
||||
name: Improvise
|
||||
effects:
|
||||
- '\take{1}'
|
||||
image: improvise
|
||||
type: sled
|
||||
flavour: 'MacGyver of the north.'
|
||||
|
||||
- &makeshift_sled
|
||||
name: Makeshift Sled
|
||||
costs:
|
||||
energy: 1
|
||||
health: 1
|
||||
effects:
|
||||
- '\supply{2}'
|
||||
- '\take{6}'
|
||||
image: makeshift_sled
|
||||
type: sled
|
||||
flavour: "Rickety, but it'll hold."
|
||||
|
||||
- &salvage
|
||||
name: Salvage
|
||||
costs:
|
||||
energy: 1
|
||||
health: 1
|
||||
effects:
|
||||
- '\supply{3}'
|
||||
- '\take{2}'
|
||||
image: salvage
|
||||
type: sled
|
||||
flavour: 'Take the good with the bad.'
|
||||
|
||||
- &antique_sled
|
||||
name: Antique Sled
|
||||
costs:
|
||||
health: 5
|
||||
effects:
|
||||
- '\supply{2}'
|
||||
- '\take{8}'
|
||||
image: antique_sled
|
||||
type: sled
|
||||
flavour: 'Withstood the test of the time.'
|
||||
|
||||
- &rush
|
||||
name: Rush
|
||||
costs:
|
||||
health: 3
|
||||
risk: 1
|
||||
effects:
|
||||
- '\move{8}'
|
||||
image: rush
|
||||
type: movement
|
||||
flavour: 'Hurry up!'
|
||||
|
||||
- &supply_run
|
||||
name: Supply Run
|
||||
effects:
|
||||
- '\move{3}'
|
||||
image: supply_run
|
||||
type: movement
|
||||
flavour: 'Not as easy as dropping by the grocery store.'
|
||||
|
||||
# }}}
|
||||
|
||||
decks:
|
||||
- name: Starter1
|
||||
cards:
|
||||
- &a_hat1
|
||||
data:
|
||||
<<: *a_hat
|
||||
rarity: common
|
||||
deck: Starter1
|
||||
output: "cards/a_hat1.tex"
|
||||
template: "templates/card.mako"
|
||||
- *breakfast
|
||||
- *breakfast
|
||||
- *dinner
|
||||
- *dog_chow
|
||||
- *first_aid
|
||||
- *first_aid
|
||||
- *good_dog
|
||||
- *grandma_soup
|
||||
- *husky
|
||||
- *lunch
|
||||
- *lunch
|
||||
- *move
|
||||
- *move
|
||||
- *move
|
||||
- *move
|
||||
- *mush
|
||||
- *repair_sled
|
||||
- *repair_sled
|
||||
- *upgrade_sled
|
||||
- *upgrade_sled
|
||||
- *wheel_dog
|
||||
|
838
cards.yaml.recovered
Normal file
838
cards.yaml.recovered
Normal file
|
@ -0,0 +1,838 @@
|
|||
# The cards
|
||||
cards:
|
||||
- &a_hat
|
||||
name: 'A Hat'
|
||||
costs:
|
||||
energy: 2
|
||||
health: 2
|
||||
effects:
|
||||
- '\daydraw{+1}'
|
||||
image: hat
|
||||
type: attachment
|
||||
flavour: 'I bet its a valve hat.'
|
||||
|
||||
- &dog_chow
|
||||
name: 'Dog Chow'
|
||||
costs:
|
||||
energy: 3
|
||||
health: 3
|
||||
effects:
|
||||
- '\speed{+1}'
|
||||
image: dog_chow
|
||||
type: attachment
|
||||
flavour: 'A hungry dog is a slow dog.'
|
||||
|
||||
- &good_dog
|
||||
name: 'Good Dog'
|
||||
costs:
|
||||
energy: 3
|
||||
health: 3
|
||||
effects:
|
||||
- '\daydraw{+1}'
|
||||
image: good_dog
|
||||
type: dog
|
||||
flavour: 'Good boy.'
|
||||
|
||||
- &husky
|
||||
name: 'Husky'
|
||||
costs:
|
||||
energy: 2
|
||||
health: 2
|
||||
risk: 2
|
||||
effects:
|
||||
- '\daydraw{+1}'
|
||||
- '\speed{+1}'
|
||||
image: husky
|
||||
type: dog
|
||||
flavour: 'Standard mushing fare.'
|
||||
|
||||
- &wheel_dog
|
||||
name: 'Wheel Dog'
|
||||
costs:
|
||||
energy: 3
|
||||
health: 3
|
||||
effects:
|
||||
- '\speed{+1}'
|
||||
- '\discardonkill'
|
||||
- '\inplayatstart'
|
||||
image: wheel_dog
|
||||
type: dog
|
||||
flavour: 'The dog right in front of the sled. Strong and steady.'
|
||||
|
||||
- &breakfast
|
||||
name: 'Breakfast'
|
||||
costs:
|
||||
health: 3
|
||||
effects:
|
||||
- '\draw{3}'
|
||||
image: breakfast
|
||||
type: food
|
||||
flavour: 'The most important meal of the day.'
|
||||
|
||||
- &lunch
|
||||
name: 'Lunch'
|
||||
costs:
|
||||
energy: 3
|
||||
effects:
|
||||
- '\draw{3}'
|
||||
image: lunch
|
||||
type: food
|
||||
flavour: 'What about second breakfast?'
|
||||
|
||||
- &dinner
|
||||
name: 'Dinner'
|
||||
costs:
|
||||
energy: 2
|
||||
health: 2
|
||||
effects:
|
||||
- '\draw{7}'
|
||||
image: dinner
|
||||
type: food
|
||||
flavour: 'I hope you like salted fish.'
|
||||
|
||||
- &move
|
||||
name: 'Move'
|
||||
effects:
|
||||
- '\move{1}'
|
||||
image: move
|
||||
type: movement
|
||||
flavour: 'Just another day.'
|
||||
|
||||
- &mush
|
||||
name: 'Mush'
|
||||
costs:
|
||||
energy: 2
|
||||
health: 2
|
||||
risk: 1
|
||||
effects:
|
||||
- '\move{10}'
|
||||
image: mush
|
||||
type: movement
|
||||
flavour: "Comes from the french word ``Marche''."
|
||||
|
||||
- &first_aid
|
||||
name: First Aid
|
||||
costs:
|
||||
energy: 2
|
||||
health: 2
|
||||
effects:
|
||||
- '\see{3}'
|
||||
- '\destroy{1}'
|
||||
image: first_aid
|
||||
type: personal
|
||||
flavour: 'Reduces swelling.'
|
||||
|
||||
- &grandma_soup
|
||||
name: Grandma Soup
|
||||
costs:
|
||||
energy: 1
|
||||
health: 2
|
||||
risk: 1
|
||||
effects:
|
||||
- '\see{10}'
|
||||
- '\destroy{2}'
|
||||
image: grandma_soup
|
||||
type: personal
|
||||
flavour: 'Cures what ails you.'
|
||||
|
||||
- &repair_sled
|
||||
name: Repair Sled
|
||||
costs:
|
||||
energy: 1
|
||||
health: 3
|
||||
effects:
|
||||
- '\supply{1}'
|
||||
- '\take{2}'
|
||||
image: repair_sled
|
||||
type: sled
|
||||
flavour: "It doesn't need to be pretty. It just has to work."
|
||||
|
||||
- &upgrade_sled
|
||||
name: Upgrade Sled
|
||||
costs:
|
||||
energy: 2
|
||||
health: 2
|
||||
effects:
|
||||
- '\supply{3}'
|
||||
- '\take{1}'
|
||||
image: upgrade_sled
|
||||
type: sled
|
||||
flavour: 'You have to keep your ride in top shape.'
|
||||
|
||||
- &buffer_panel
|
||||
name: Buffer Panel
|
||||
costs:
|
||||
energy: 2
|
||||
health: 2
|
||||
effects:
|
||||
- '\immortal'
|
||||
- '\safepass'
|
||||
image: buffer_panel
|
||||
type: attachment
|
||||
flavour: 'Did the primary buffer panel just fall of my gorram ship for no apparent reason?'
|
||||
|
||||
- &nuclear_reactor
|
||||
name: Nuclear Reactor
|
||||
costs:
|
||||
energy: 2
|
||||
health: 2
|
||||
effects:
|
||||
- '\speed{+5}'
|
||||
- '\passdie'
|
||||
image: nuclear_reactor
|
||||
type: attachment
|
||||
flavour: 'What could go wrong?'
|
||||
|
||||
- &engineer_dog
|
||||
name: Engineer Dog
|
||||
costs:
|
||||
energy: 3
|
||||
health: 5
|
||||
risk: 1
|
||||
effects:
|
||||
- '\speed{$\times 2$}'
|
||||
- '\nohold'
|
||||
image: engineer_dog
|
||||
type: dog
|
||||
flavour: 'Nails and Gears.'
|
||||
|
||||
- &moose
|
||||
name: Moose
|
||||
costs:
|
||||
energy: 5
|
||||
risk: 3
|
||||
effects:
|
||||
- '\speed{+5}'
|
||||
- '\immortal'
|
||||
image: moose
|
||||
type: dog
|
||||
flavour: 'Majestic creatures. Hard to tame.'
|
||||
|
||||
- &waffle
|
||||
name: Waffle
|
||||
effects:
|
||||
- '\draw{2}'
|
||||
image: waffles
|
||||
type: food
|
||||
flavour: 'Waffles are \textbf{delicious}.'
|
||||
|
||||
- &whale_meat
|
||||
name: Whale Meat
|
||||
costs:
|
||||
energy: 1
|
||||
health: 1
|
||||
effects:
|
||||
- '\draw{5}'
|
||||
- '\nohypothermia'
|
||||
image: whale_meat
|
||||
type: food
|
||||
flavour: "It's like rubber."
|
||||
|
||||
- &hitch_a_ride
|
||||
name: Hitch a Ride
|
||||
costs:
|
||||
energy: 1
|
||||
effects:
|
||||
- '\move{6}'
|
||||
- '\damage{1}'
|
||||
image: hitch_a_ride
|
||||
type: movement
|
||||
flavour: 'Probably not in the spirit of the race.'
|
||||
|
||||
- &tactical_play
|
||||
name: Tactical Play
|
||||
costs:
|
||||
energy: 1
|
||||
risk: 1
|
||||
effects:
|
||||
- '\move{0}'
|
||||
- '\doubledistance'
|
||||
image: tactical_play
|
||||
type: movement
|
||||
flavour: 'Make the most of it.'
|
||||
|
||||
- &meditate
|
||||
name: Meditate
|
||||
costs:
|
||||
energy: 1
|
||||
health: 1
|
||||
effects:
|
||||
- '\see{all}'
|
||||
- '\destroy{0}'
|
||||
image: meditate
|
||||
type: personal
|
||||
flavour: 'It \textit{is} just sitting.'
|
||||
|
||||
- &diamorphine
|
||||
name: Diamorphine
|
||||
costs:
|
||||
energy: 1
|
||||
health: 1
|
||||
risk: 1
|
||||
effects:
|
||||
- '\see{all}'
|
||||
- '\destroy{all}'
|
||||
image: diamorphine
|
||||
type: personal
|
||||
flavour: 'Highly addicting.'
|
||||
|
||||
- &desperate_times
|
||||
name: Desperate Times
|
||||
costs:
|
||||
energy: all
|
||||
effects:
|
||||
- '\supply{10}'
|
||||
- '\take{5}'
|
||||
image: desparate_times
|
||||
type: sled
|
||||
flavour: 'Desperate measures hotline, how may I help you?'
|
||||
|
||||
- &lead_sled
|
||||
name: Lead Sled
|
||||
costs:
|
||||
energy: 1
|
||||
health: 1
|
||||
risk: 1
|
||||
effects:
|
||||
- '\supply{10}'
|
||||
- '\take{10}'
|
||||
image: lead_sled
|
||||
type: sled
|
||||
flavour: "At least it's not a zeppelin."
|
||||
|
||||
- &damaged
|
||||
name: Damaged
|
||||
costs:
|
||||
energy: 1
|
||||
health: 1
|
||||
effects:
|
||||
- '\damagetext'
|
||||
image: damaged
|
||||
type: damage
|
||||
flavour: 'You have been hurt.'
|
||||
|
||||
- &dog_shoes
|
||||
name: Dog Shoes
|
||||
costs:
|
||||
energy: 2
|
||||
health: 3
|
||||
effects:
|
||||
- '\speed{+2}'
|
||||
image: dog_shoes
|
||||
type: attachment
|
||||
flavour: 'Dogs look cute in shoes.'
|
||||
|
||||
- &squirrel
|
||||
name: Squirrel
|
||||
costs:
|
||||
energy: 2
|
||||
health: 2
|
||||
risk: 1
|
||||
effects:
|
||||
- '\speed{+3}'
|
||||
image: squirrel
|
||||
type: attachment
|
||||
flavour: 'Dogs \emph{hate} squirrels.'
|
||||
|
||||
- &tiara
|
||||
name: Tiara
|
||||
costs:
|
||||
energy: 2
|
||||
health: 2
|
||||
risk: 1
|
||||
effects:
|
||||
- '\daydraw{+1}'
|
||||
- '\speed{+1}'
|
||||
image: tiara
|
||||
type: attachment
|
||||
flavour: 'Makes the dog feel special.'
|
||||
|
||||
- &bear
|
||||
name: Bear
|
||||
costs:
|
||||
energy: 2
|
||||
health: 2
|
||||
risk: 2
|
||||
effects:
|
||||
- '\speed{+5}'
|
||||
image: bear
|
||||
type: dog
|
||||
flavour: 'In hindsight, not the best idea.'
|
||||
|
||||
- &big_dog
|
||||
name: Big Dog
|
||||
costs:
|
||||
energy: 2
|
||||
health: 2
|
||||
effects:
|
||||
- '\speed{+3}'
|
||||
image: big_dog
|
||||
type: dog
|
||||
flavour: "He's not red though."
|
||||
|
||||
- &greyhound
|
||||
name: Greyhound
|
||||
costs:
|
||||
risk: 2
|
||||
effects:
|
||||
- '\speed{+3}'
|
||||
- '\nohold'
|
||||
image: greyhound
|
||||
type: dog
|
||||
flavour: 'What happens when you mix the colours on a husky? You get a grey hound.'
|
||||
|
||||
- &malamute
|
||||
name: Malamute
|
||||
costs:
|
||||
energy: 2
|
||||
health: 2
|
||||
risk: 1
|
||||
effects:
|
||||
- '\daydraw{+2}'
|
||||
image: malamute
|
||||
type: dog
|
||||
flavour: 'A common sled hauling breed.'
|
||||
|
||||
- &problem_dog
|
||||
name: Problem Dog
|
||||
costs:
|
||||
energy: 1
|
||||
health: 1
|
||||
risk: 1
|
||||
effects:
|
||||
- '\daydraw{-1}'
|
||||
- '\speed{+3}'
|
||||
image: problem_dog
|
||||
type: dog
|
||||
flavour: "I swear, if you weren't so fast."
|
||||
|
||||
- &bison
|
||||
name: Bison
|
||||
costs:
|
||||
energy: 2
|
||||
risk: 1
|
||||
effects:
|
||||
- '\draw{5}'
|
||||
image: bison
|
||||
type: food
|
||||
flavour: "It's very lean."
|
||||
|
||||
- &poutine
|
||||
name: Poutine
|
||||
costs:
|
||||
health: 2
|
||||
effects:
|
||||
- '\draw{1}'
|
||||
- '\nohypothermia'
|
||||
image: poutine
|
||||
type: food
|
||||
flavour: 'The great Canadian carb!'
|
||||
|
||||
- &venison
|
||||
name: Venison
|
||||
costs:
|
||||
health: 2
|
||||
effects:
|
||||
- '\draw{3}'
|
||||
image: venison
|
||||
type: food
|
||||
flavour: 'Better than breakfast.'
|
||||
|
||||
- &steak
|
||||
name: Steak
|
||||
effects:
|
||||
- '\draw{1}'
|
||||
image: steak
|
||||
type: food
|
||||
flavour: "Well aren't you fancy."
|
||||
|
||||
- &jerky
|
||||
name: Jerky
|
||||
costs:
|
||||
energy: 1
|
||||
health: 1
|
||||
effects:
|
||||
- '\draw{3}'
|
||||
image: jerky
|
||||
type: food
|
||||
flavour: 'Watch your sodium!'
|
||||
|
||||
- &midnight_sun
|
||||
name: Midnight Sun
|
||||
costs:
|
||||
energy: 1
|
||||
health: 1
|
||||
risk: 1
|
||||
effects:
|
||||
- '\move{10}'
|
||||
image: midnight_sun
|
||||
type: movement
|
||||
flavour: 'Strange things are done in the midnight sun.'
|
||||
|
||||
- &push
|
||||
name: Push
|
||||
costs:
|
||||
energy: 1
|
||||
effects:
|
||||
- '\move{5}'
|
||||
image: push
|
||||
type: movement
|
||||
flavour: 'Not a full mush, but still putting in some effort.'
|
||||
|
||||
- &slow_and_steady
|
||||
name: Slow and Steady
|
||||
effects:
|
||||
- '\draw{1}'
|
||||
- '\move{0}'
|
||||
image: slow_and_steady
|
||||
type: movement
|
||||
flavour: 'Maybe a bit too slow.'
|
||||
|
||||
- &band_aid
|
||||
name: Band Aid
|
||||
effects:
|
||||
- '\see{1}'
|
||||
- '\destroy{1}'
|
||||
image: band_aid
|
||||
type: personal
|
||||
flavour: 'Not much.'
|
||||
|
||||
- &bandage
|
||||
name: Bandage
|
||||
costs:
|
||||
energy: 1
|
||||
effects:
|
||||
- '\see{5}'
|
||||
- '\destroy{1}'
|
||||
image: bandage
|
||||
type: personal
|
||||
flavour: 'Make sure you wrap it tight.'
|
||||
|
||||
- &brandy
|
||||
name: Brandy
|
||||
costs:
|
||||
risk: 1
|
||||
effects:
|
||||
- '\see{5}'
|
||||
- '\destroy{1}'
|
||||
image: brandy
|
||||
type: personal
|
||||
flavour: 'Brought by a St.\ Bernard'
|
||||
|
||||
- &caffeine
|
||||
name: Caffeine
|
||||
costs:
|
||||
health: 2
|
||||
effects:
|
||||
- '\draw{1}'
|
||||
- '\see{2}'
|
||||
- '\destroy{1}'
|
||||
image: caffeine
|
||||
type: personal
|
||||
flavour: 'The greatest addiction ever.'
|
||||
|
||||
- &improvise
|
||||
name: Improvise
|
||||
effects:
|
||||
- '\take{1}'
|
||||
image: improvise
|
||||
type: sled
|
||||
flavour: 'MacGyver of the north.'
|
||||
|
||||
- &makeshift_sled
|
||||
name: Makeshift Sled
|
||||
costs:
|
||||
energy: 1
|
||||
health: 1
|
||||
effects:
|
||||
- '\supply{2}'
|
||||
- '\take{6}'
|
||||
image: makeshift_sled
|
||||
type: sled
|
||||
flavour: "Rickety, but it'll hold."
|
||||
|
||||
- &salvage
|
||||
name: Salvage
|
||||
costs:
|
||||
energy: 1
|
||||
health: 1
|
||||
effects:
|
||||
- '\supply{3}'
|
||||
- '\take{2}'
|
||||
image: salvage
|
||||
type: sled
|
||||
flavour: 'Take the good with the bad.'
|
||||
|
||||
- &antique_sled
|
||||
name: Antique Sled
|
||||
costs:
|
||||
health: 5
|
||||
effects:
|
||||
- '\supply{2}'
|
||||
- '\take{8}'
|
||||
image: antique_sled
|
||||
type: sled
|
||||
flavour: 'Withstood the test of the time.'
|
||||
|
||||
- &rush
|
||||
name: Rush
|
||||
costs:
|
||||
health: 3
|
||||
risk: 1
|
||||
effects:
|
||||
- '\move{8}'
|
||||
image: rush
|
||||
type: movement
|
||||
flavour: 'Hurry up!'
|
||||
|
||||
- &supply_run
|
||||
name: Supply Run
|
||||
effects:
|
||||
- '\move{3}'
|
||||
image: supply_run
|
||||
type: movement
|
||||
flavour: 'Not as easy as dropping by the grocery store.'
|
||||
|
||||
# The decks that the cards are in
|
||||
# TODO: Add rarity?
|
||||
decks:
|
||||
- name: Starter1
|
||||
cards:
|
||||
- *a_hat
|
||||
- *breakfast
|
||||
- *breakfast
|
||||
- *dinner
|
||||
- *dog_chow
|
||||
- *first_aid
|
||||
- *first_aid
|
||||
- *good_dog
|
||||
- *grandma_soup
|
||||
- *husky
|
||||
- *lunch
|
||||
- *lunch
|
||||
- *move
|
||||
- *move
|
||||
- *move
|
||||
- *move
|
||||
- *mush
|
||||
- *repair_sled
|
||||
- *repair_sled
|
||||
- *upgrade_sled
|
||||
- *upgrade_sled
|
||||
- *wheel_dog
|
||||
|
||||
- name: Starter2
|
||||
cards:
|
||||
- *a_hat
|
||||
- *breakfast
|
||||
- *breakfast
|
||||
- *dinner
|
||||
- *dog_chow
|
||||
- *first_aid
|
||||
- *first_aid
|
||||
- *good_dog
|
||||
- *grandma_soup
|
||||
- *husky
|
||||
- *lunch
|
||||
- *lunch
|
||||
- *move
|
||||
- *move
|
||||
- *move
|
||||
- *move
|
||||
- *mush
|
||||
- *repair_sled
|
||||
- *repair_sled
|
||||
- *upgrade_sled
|
||||
- *upgrade_sled
|
||||
- *wheel_dog
|
||||
|
||||
- name: Starter3
|
||||
cards:
|
||||
- *a_hat
|
||||
- *breakfast
|
||||
- *breakfast
|
||||
- *dinner
|
||||
- *dog_chow
|
||||
- *first_aid
|
||||
- *first_aid
|
||||
- *good_dog
|
||||
- *grandma_soup
|
||||
- *husky
|
||||
- *lunch
|
||||
- *lunch
|
||||
- *move
|
||||
- *move
|
||||
- *move
|
||||
- *move
|
||||
- *mush
|
||||
- *repair_sled
|
||||
- *repair_sled
|
||||
- *upgrade_sled
|
||||
- *upgrade_sled
|
||||
- *wheel_dog
|
||||
|
||||
- name: Starter4
|
||||
cards:
|
||||
- *a_hat
|
||||
- *breakfast
|
||||
- *breakfast
|
||||
- *dinner
|
||||
- *dog_chow
|
||||
- *first_aid
|
||||
- *first_aid
|
||||
- *good_dog
|
||||
- *grandma_soup
|
||||
- *husky
|
||||
- *lunch
|
||||
- *lunch
|
||||
- *move
|
||||
- *move
|
||||
- *move
|
||||
- *move
|
||||
- *mush
|
||||
- *repair_sled
|
||||
- *repair_sled
|
||||
- *upgrade_sled
|
||||
- *upgrade_sled
|
||||
- *wheel_dog
|
||||
|
||||
- name: Damage
|
||||
cards:
|
||||
- *damaged
|
||||
- *damaged
|
||||
- *damaged
|
||||
- *damaged
|
||||
- *damaged
|
||||
- *damaged
|
||||
- *damaged
|
||||
- *damaged
|
||||
- *damaged
|
||||
- *damaged
|
||||
|
||||
- name: Legendary
|
||||
cards:
|
||||
- *buffer_panel
|
||||
- *desperate_times
|
||||
- *diamorphine
|
||||
- *engineer_dog
|
||||
- *hitch_a_ride
|
||||
- *lead_sled
|
||||
- *meditate
|
||||
- *moose
|
||||
- *nuclear_reactor
|
||||
- *tactical_play
|
||||
- *waffle
|
||||
- *whale_meat
|
||||
|
||||
- name: Race
|
||||
cards:
|
||||
- *bear
|
||||
- *bear
|
||||
- *big_dog
|
||||
- *big_dog
|
||||
- *dog_shoes
|
||||
- *dog_shoes
|
||||
- *greyhound
|
||||
- *greyhound
|
||||
- *improvise
|
||||
- *improvise
|
||||
- *midnight_sun
|
||||
- *midnight_sun
|
||||
- *problem_dog
|
||||
- *problem_dog
|
||||
- *push
|
||||
- *push
|
||||
- *rush
|
||||
- *rush
|
||||
- *slow_and_steady
|
||||
- *slow_and_steady
|
||||
- *squirrel
|
||||
- *squirrel
|
||||
- *supply_run
|
||||
- *supply_run
|
||||
- *tiara
|
||||
- *tiara
|
||||
|
||||
- name: Survival
|
||||
cards:
|
||||
- *antique_sled
|
||||
- *antique_sled
|
||||
- *band_aid
|
||||
- *band_aid
|
||||
- *bandage
|
||||
- *bandage
|
||||
- *bison
|
||||
- *bison
|
||||
- *brandy
|
||||
- *brandy
|
||||
- *caffeine
|
||||
- *caffeine
|
||||
- *jerky
|
||||
- *jerky
|
||||
- *makeshift_sled
|
||||
- *makeshift_sled
|
||||
- *malamute
|
||||
- *malamute
|
||||
- *poutine
|
||||
- *poutine
|
||||
- *salvage
|
||||
- *salvage
|
||||
- *steak
|
||||
- *steak
|
||||
- *venison
|
||||
- *venison
|
||||
|
||||
Legs:
|
||||
- &farm
|
||||
name: Farm
|
||||
effects:
|
||||
- '\allowednot{\includegraphics[width=1cm]{icons/starve.png}}'
|
||||
spaces:
|
||||
3: hypo
|
||||
5: damage
|
||||
7: hypo
|
||||
|
||||
- &fishing_hole
|
||||
name: Fishing Hole
|
||||
effects:
|
||||
- '\daydraw{3}'
|
||||
spaces:
|
||||
3: damage
|
||||
5: hypo
|
||||
7: damage
|
||||
|
||||
- &hospital
|
||||
name: Hospital
|
||||
effects:
|
||||
- '\freecardtype{personal}'
|
||||
spaces:
|
||||
3: starve
|
||||
5: hypo
|
||||
7: starve
|
||||
|
||||
- &new_moon
|
||||
name: New Moon
|
||||
effects:
|
||||
- '\freecardtype{dog}'
|
||||
spaces:
|
||||
3: hypo
|
||||
5: starve
|
||||
7: hypo
|
||||
|
||||
- &repair_shop
|
||||
name: Repair Shop
|
||||
effects:
|
||||
- '\freecardtype{sled}'
|
||||
|
||||
|
||||
Legdecks:
|
||||
- name: First
|
||||
legs:
|
||||
- *farm
|
||||
- *fishing_hole
|
||||
- *hospital
|
||||
- *new_moon
|
||||
|
||||
|
||||
|
||||
# TODO: add legs
|
37
make_mako.py
Normal file
37
make_mako.py
Normal file
|
@ -0,0 +1,37 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
"""
|
||||
Used as a tool by the Makefile to generate sources from the assets.toml file.
|
||||
"""
|
||||
|
||||
import toml
|
||||
from mako.template import Template
|
||||
|
||||
def update_file(fname, contents):
|
||||
"""
|
||||
Updates the given file with the given contents unless .fname.hash matches
|
||||
hash(contents).
|
||||
"""
|
||||
try:
|
||||
with open(f'.{fname}.hash', 'r') as fhash:
|
||||
if fhash.read() == str(contents):
|
||||
return
|
||||
except:
|
||||
pass
|
||||
|
||||
with open(fname, 'w') as f:
|
||||
f.write(contents)
|
||||
|
||||
def main(infile, outdir):
|
||||
"""
|
||||
Entry point: generates outputs based on data in input files.
|
||||
"""
|
||||
with open(infile, 'r') as f:
|
||||
data = toml.load(infile)
|
||||
|
||||
for template_name in data:
|
||||
template = Template(filename=template_name)
|
||||
|
||||
for output_name in data[template_name]:
|
||||
result = template.render(**data[template_name][output_name])
|
||||
update_file(outdir + '/' + output_name, result)
|
18
rules/checks.mk
Normal file
18
rules/checks.mk
Normal file
|
@ -0,0 +1,18 @@
|
|||
# Checks existence of necessary executables
|
||||
CONVERT:=$(shell command -v convert 2> /dev/null)
|
||||
XELATEX:=$(shell command -v xelatex 2> /dev/null)
|
||||
PDFTOPPM:=$(shell command -v pdftoppm 2> /dev/null)
|
||||
PDFUNITE:=$(shell command -v pdfunite 2> /dev/null)
|
||||
|
||||
ifndef CONVERT
|
||||
$(error "convert not found. Please install imagemagick")
|
||||
endif
|
||||
ifndef XELATEX
|
||||
$(error "xelatex not found. Please install xetex")
|
||||
endif
|
||||
ifndef PDFTOPPM
|
||||
$(error "pdftoppm not found. Please install poppler")
|
||||
endif
|
||||
ifndef PDFUNITE
|
||||
$(error "pdfunite not found. Please install poppler")
|
||||
endif
|
6
rules/conversion.mk
Normal file
6
rules/conversion.mk
Normal file
|
@ -0,0 +1,6 @@
|
|||
%.pdf: %.tex
|
||||
$(XELATEX) -interaction=batchmode -halt-on-error --shell-escape --output-directory=$(@D) $<
|
||||
rm $*.aux
|
||||
rm $*.log
|
||||
|
||||
|
6
rules/generated.mk
Normal file
6
rules/generated.mk
Normal file
|
@ -0,0 +1,6 @@
|
|||
ASSET_NAMES=$(shell aq -it -oj -r '.[] | keys | .[]' < $(ASSET_TOML))
|
||||
GENERATED_SOURCES=$(ASSET_NAMES:%=$(GENERATED_DIR)/%)
|
||||
|
||||
update_sources: $(ASSET_TOML)
|
||||
./make_mako.py $^ $(GENERATED_DIR)
|
||||
|
15
rules/mako.mk
Normal file
15
rules/mako.mk
Normal file
|
@ -0,0 +1,15 @@
|
|||
ASSETS=$(shell aq -it -oj -r '.[] | keys[]' < $(ASSET_TOML))
|
||||
GENERATED_ASSETS=$(patsubst %,generated/%,$(ASSETS))
|
||||
|
||||
MAKO_SCRIPT=from mako.template import Template; \
|
||||
import json; \
|
||||
import sys; \
|
||||
print(Template(filename=sys.argv[1]).render(**json.load(sys.stdin)))
|
||||
AQ_FIND_SCRIPT=to_entries[] | select(.value|has("$*"))
|
||||
|
||||
$(GENERATED_ASSETS): generated/%: $(ASSET_TOML)
|
||||
TEMPLATE="templates/$$(aq -it -oj -r '$(AQ_FIND_SCRIPT) | .key' < $^).mako"; \
|
||||
aq -it -oj '$(AQ_FIND_SCRIPT) | .value["$*"]' < $^ \
|
||||
| python -c '$(MAKO_SCRIPT)' "$$TEMPLATE" > $@.raw
|
||||
rsync --remove-source-files --checksum $@.raw $@
|
||||
|
7
rules/outputs.mk
Normal file
7
rules/outputs.mk
Normal file
|
@ -0,0 +1,7 @@
|
|||
outputs/iditaboard[face].png: iditaboard.pdf
|
||||
$(PDFTOPPM) -scale-to-x 4875 -scale-to-y 3075 -png $< > $@
|
||||
|
||||
outputs/cardback.png: cardback.png
|
||||
cp $< $@
|
||||
|
||||
|
4
rules/rsync.mk
Normal file
4
rules/rsync.mk
Normal file
|
@ -0,0 +1,4 @@
|
|||
# Shorthand rule for copying the standard input to the result file
|
||||
define rsync-copy
|
||||
cat > $@.raw; rsync --remove-source-files --checksum $@.raw $@
|
||||
endef
|
6
templates/card.mako
Normal file
6
templates/card.mako
Normal file
|
@ -0,0 +1,6 @@
|
|||
## % TODO: how to get the deck info?
|
||||
\documentclass{iditacard}
|
||||
|
||||
\cardtype{${type}}
|
||||
## \rarity{${rarity}}
|
||||
## \deck{${deck}}
|
10
templates/deck.mako
Normal file
10
templates/deck.mako
Normal file
|
@ -0,0 +1,10 @@
|
|||
<%
|
||||
# Creates a flattened map of repeated elements
|
||||
components = [x for (k, v) in contents.items() for x in [k]*v]
|
||||
%>
|
||||
outputs/${name}.pdf: ${' '.join(components)}; pdfunite $+ $@
|
||||
% for (card, count) in contents.items():
|
||||
export: outputs/generated/${name}/${card}[${count}].png
|
||||
outputs/generated/${name}/${card}[${count}].png: generated/${card}.png; cp $^ $@
|
||||
% endfor
|
||||
decks: outputs/${name}.pdf
|
3
templates/test.mako
Normal file
3
templates/test.mako
Normal file
|
@ -0,0 +1,3 @@
|
|||
% for (k, v) in data.items():
|
||||
${k} is ${v}!
|
||||
% endfor
|
31
test.json
Normal file
31
test.json
Normal file
|
@ -0,0 +1,31 @@
|
|||
{
|
||||
"data": {
|
||||
"a_hat.tex": {
|
||||
"name": "A Hat",
|
||||
"costs": {
|
||||
"energy": 2,
|
||||
"health": 2
|
||||
},
|
||||
"effects": {
|
||||
"daydraw": "+1"
|
||||
},
|
||||
"image": "hat",
|
||||
"type": "attachment",
|
||||
"flavour": "I bet its a valve hat."
|
||||
},
|
||||
"dog_chow.tex": {
|
||||
"name": "Dog Chow",
|
||||
"costs": {
|
||||
"energy": 3
|
||||
},
|
||||
"cards": {
|
||||
"health": 3
|
||||
},
|
||||
"effects": {
|
||||
"speed": "+1"
|
||||
},
|
||||
"image": "dog_chow",
|
||||
"type": "attachment",
|
||||
"flavour": "A hungry dog is a slow dog."
|
||||
}
|
||||
}}
|
Loading…
Reference in a new issue