diff --git a/SotMDeckBuilder.py b/SotMDeckBuilder.py
index ed25fe4..a21f3cf 100755
--- a/SotMDeckBuilder.py
+++ b/SotMDeckBuilder.py
@@ -42,6 +42,10 @@ def makeSVG(base, properties):
if "hp" not in properties:
removeElement(tree, "hpMark")
+ # remove setup box if there is no setup
+ if "setup" not in properties:
+ removeElement(tree, "setupBox")
+
if "art" in properties:
art = tree.find('.//*[@id="art"]')
if art is not None:
@@ -71,19 +75,41 @@ def makeFaces(deckJson, outfile):
cardType = deckJson["type"]
cardNum = 0
- # Make a card for each character card
+ # Make a card for each hero character card
if cardType == "hero":
for card in deckJson['character']:
makeFace(baseImage, baseX, cardNum,
os.path.join("images", cardType, "charFront.svg"), card)
cardNum += 1
-
makeFace(baseImage, baseX, cardNum,
os.path.join("images", cardType, "charBack.svg"), card)
cardNum += 1
- if cardType == "villain":
- pass
+ # Make a character and instructions card for each villain card
+ elif cardType == "villain":
+ for card in deckJson['character']:
+ front = card["front"]
+ front["name"] = card["name"]
+ back = card["back"]
+ back["name"] = card["name"]
+ makeFace(baseImage, baseX, cardNum,
+ os.path.join("images", cardType, "character.svg"),
+ front)
+ cardNum += 1
+ makeFace(baseImage, baseX, cardNum,
+ os.path.join("images", cardType, "character.svg"),
+ back)
+ cardNum += 1
+
+ makeFace(baseImage, baseX, cardNum,
+ os.path.join("images", cardType, "instructions.svg"),
+ front)
+ cardNum += 1
+ makeFace(baseImage, baseX, cardNum,
+ os.path.join("images", cardType, "instructions.svg"),
+ back)
+ cardNum += 1
+
# Make a card for each card
for card in deckJson['deck']:
@@ -94,6 +120,24 @@ def makeFaces(deckJson, outfile):
baseImage.save(outfile + ".png", "PNG")
return baseX
+def makeCardJson(template, nickname, description, cardID):
+ card = template.copy()
+ card.update({"Nickname": nickname,
+ "Description": description,
+ "CardID": cardID})
+ return card
+
+def makeDoubleSidedCardJson(template, nickname, descriptionFront,
+ descriptionBack, cardID):
+ cardBack = makeCardJson(template, nickname, descriptionBack, cardID + 1)
+
+ card = template.copy()
+ card.update({"Nickname": nickname,
+ "Description": descriptionFront,
+ "CardID": cardID,
+ "States": {"2": cardBack}})
+ return card
+
def makeJson(deckJson, imgWidth, outfile):
with open(bundle_dir + "/templates/deck.json") as f:
outJson = json.load(f)
@@ -110,31 +154,35 @@ def makeJson(deckJson, imgWidth, outfile):
# decks start at (10 * deck id)
cardNum = 100
- for card in deckJson['character']:
- outJson['ObjectStates'][0]['DeckIDs'].append(cardNum)
- # add front card with back as second state
- cardOutBack = cardTemplate.copy()
- cardOutBack.update({"Nickname": card['name'],
- "Description": "Incapacitated",
- "CardID": cardNum + 1})
- cardOut = cardTemplate.copy()
- cardOut.update({"Nickname": card['name'],
- "Description": "Active",
- "CardID": cardNum,
- "States": {"2": cardOutBack}})
- outJson['ObjectStates'][0]['ContainedObjects'].append(cardOut)
- cardNum += 2
+ if deckJson["type"] == "hero":
+ for card in deckJson['character']:
+ outJson['ObjectStates'][0]['DeckIDs'].append(cardNum)
+ cardOut = makeDoubleSidedCardJson(
+ cardTemplate, card['name'], "Active", "Incapacitated", cardNum)
+ outJson['ObjectStates'][0]['ContainedObjects'].append(cardOut)
+ cardNum += 2
+
+ elif deckJson["type"] == "villain":
+ for card in deckJson['character']:
+ outJson['ObjectStates'][0]['DeckIDs'].append(cardNum)
+ cardOut = makeDoubleSidedCardJson(
+ cardTemplate, card['name'], "Front", "Back", cardNum)
+ outJson['ObjectStates'][0]['ContainedObjects'].append(cardOut)
+ cardNum += 2
+
+ outJson['ObjectStates'][0]['DeckIDs'].append(cardNum)
+ cardOut = makeDoubleSidedCardJson(
+ cardTemplate, card['name'] + " instructions", "Front", "Back", cardNum)
+ outJson['ObjectStates'][0]['ContainedObjects'].append(cardOut)
+ cardNum += 2
for card in deckJson['deck']:
for i in range(0, card['count']):
outJson['ObjectStates'][0]['DeckIDs'].append(cardNum)
# add a card object thing for each card, and give it a name
- cardOut = cardTemplate.copy()
- cardOut.update({"Nickname": card['name'],
- "Description": card.get('type', ""),
- "CardID": cardNum})
+ cardOut = makeCardJson(cardTemplate, card['name'], card.get('keywords', ""), cardNum)
outJson['ObjectStates'][0]['ContainedObjects'].append(cardOut)
cardNum += 1
diff --git a/images/villain/card.svg b/images/villain/card.svg
new file mode 100644
index 0000000..f4f1dc0
--- /dev/null
+++ b/images/villain/card.svg
@@ -0,0 +1,1626 @@
+
+
diff --git a/images/villain/character.svg b/images/villain/character.svg
new file mode 100644
index 0000000..e1af77a
--- /dev/null
+++ b/images/villain/character.svg
@@ -0,0 +1,208 @@
+
+
diff --git a/images/villain/instructions.svg b/images/villain/instructions.svg
new file mode 100644
index 0000000..c11234a
--- /dev/null
+++ b/images/villain/instructions.svg
@@ -0,0 +1,916 @@
+
+