diff --git a/card.svg b/card.svg
index fe94dc8..a48c712 100644
--- a/card.svg
+++ b/card.svg
@@ -1,2 +1,2 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/card2.svg b/card2.svg
new file mode 100644
index 0000000..fe94dc8
--- /dev/null
+++ b/card2.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/src/actual_card_data_2.json b/src/actual_card_data_2.json
new file mode 100644
index 0000000..eea91db
--- /dev/null
+++ b/src/actual_card_data_2.json
@@ -0,0 +1,20 @@
+{
+ "id": 13,
+ "role": "market",
+ "card_type": "action",
+ "faction": "yellow",
+ "name": "Taxation",
+ "cost": 1,
+ "init_amount": 3,
+ "effects": [
+ {
+ "effect": "gold",
+ "amount": 2
+ },
+ {
+ "effect": "heal",
+ "amount": 6,
+ "effect_type": "faction_combo"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/card_data.json b/src/card_data.json
index 1b15ff2..e2d93a8 100644
--- a/src/card_data.json
+++ b/src/card_data.json
@@ -3,6 +3,11 @@
"title": "Rallier les Troupes",
"type": "Action, Charme",
"image_path": "lancersiz3.png"
+ },
+ "13": {
+ "title": "Caprisun",
+ "type": "Action, 20cl",
+ "image_path": "lancersiz3.png"
}
}
diff --git a/src/draw.py b/src/draw.py
new file mode 100644
index 0000000..321aa78
--- /dev/null
+++ b/src/draw.py
@@ -0,0 +1,36 @@
+from typing import List
+
+stats_radius = 22
+
+
+def draw_effects_resources_for_row(dwg, effects: List, y: int, x_width: int):
+ row_1_nb_effects = len(effects)
+
+ row_1_x_offset = -20
+ row_1_x_step = 60
+ if row_1_nb_effects == 1:
+ row_1_x_offset = 0
+ elif row_1_nb_effects == 2:
+ row_1_x_offset = -20
+ elif row_1_nb_effects == 3:
+ row_1_x_offset = -40
+ row_1_nb_effects_applied = 0
+
+ for effect in effects:
+ if effect.get('effect') == 'damage':
+ x_effect_pos = x_width/2 + row_1_x_offset + row_1_x_step*row_1_nb_effects_applied
+ dwg.add(dwg.circle(center=(x_effect_pos, y + stats_radius), r=stats_radius, fill='red'))
+ dwg.add(dwg.text(str(effect.get('amount')), insert=(x_effect_pos, y + stats_radius + 9), text_anchor='middle', fill='white', font_size='24px', font_weight="bold", font_family='Helvetica'))
+ row_1_nb_effects_applied += 1
+
+ if effect.get('effect') == 'gold':
+ x_effect_pos = x_width/2 + row_1_x_offset + row_1_x_step*row_1_nb_effects_applied
+ dwg.add(dwg.circle(center=(x_effect_pos, y + stats_radius), r=stats_radius, fill='yellow'))
+ dwg.add(dwg.text(str(effect.get('amount')), insert=(x_effect_pos, y + stats_radius + 9), text_anchor='middle', fill='black', font_size='24px', font_weight="bold", font_family='Helvetica'))
+ row_1_nb_effects_applied += 1
+
+ if effect.get('effect') == 'heal':
+ x_effect_pos = x_width/2 + row_1_x_offset + row_1_x_step*row_1_nb_effects_applied
+ dwg.add(dwg.circle(center=(x_effect_pos, y + stats_radius), r=stats_radius, fill='green'))
+ dwg.add(dwg.text(str(effect.get('amount')), insert=(x_effect_pos, y + stats_radius + 9), text_anchor='middle', fill='white', font_size='24px', font_weight="bold", font_family='Helvetica'))
+ row_1_nb_effects_applied += 1
diff --git a/src/generate_cards_mvp.py b/src/generate_cards_mvp.py
index 9adbcc6..8a63552 100644
--- a/src/generate_cards_mvp.py
+++ b/src/generate_cards_mvp.py
@@ -64,7 +64,9 @@
import svgwrite
import json
-from typing import Array
+from typing import List
+
+from draw import draw_effects_resources_for_row
with open('src/card_data.json') as f:
@@ -80,7 +82,6 @@ title_y_offset = 24
title_font_size = 19
subtitle_font_size = 13
cost_right_offset = 38
-stats_radius = 22
effect_text_size = 14
row_1_base_y = 280
row_2_base_y = 375
@@ -110,7 +111,7 @@ icon_colors = {
with open('src/actual_card_data.json') as f:
card_data = json.load(f)
-card_skin_data = all_skin_data['id']
+card_skin_data = all_skin_data[str(card_data['id'])]
# Create a new SVG drawing
@@ -164,58 +165,57 @@ dwg.add(dwg.image(card_skin_data['image_path'], insert=(0, 65), size=(x_width, 2
dwg.add(dwg.rect(insert=(border_width_x, 265), size=(str(30) + 'px', str(y_height - 265 - border_width_y) + 'px'), fill='url(#grad1)'))
# TODO: figure out nb of effects and adjust row_1_x_offset accordingly
-def is_base_effect(array: Array):
- return array['effect_type'] == 'champion_action' or not array['effect_type']
+def is_base_effect(array: List):
+ return not 'effect_type' in array.keys() or array['effect_type'] == 'champion_action'
-card_effects: Array = card_data['effects']
+card_effects: List = card_data['effects']
base_effects = list(filter(is_base_effect, card_effects))
other_effects = list(filter(lambda x: not is_base_effect(x), card_effects))
# card_effects = card_data['row_1']
# row_1_nb_effects = len(card_data['row_1'].keys())
-row_1_nb_effects = len(base_effects)
-row_1_x_offset = -20
-row_1_x_step = 60
-if row_1_nb_effects == 1:
- row_1_x_offset = 0
-elif row_1_nb_effects == 2:
- row_1_x_offset = -20
-elif row_1_nb_effects == 3:
- row_1_x_offset = -40
-row_1_nb_effects_applied = 0
# Draw row 1 stats
-for effect in base_effects:
- if effect.get('effect') == 'damage':
- # if card_effects.get('damage'):
- x_effect_pos = x_width/2 + row_1_x_offset + row_1_x_step*row_1_nb_effects_applied
- dwg.add(dwg.circle(center=(x_effect_pos, row_1_base_y + stats_radius), r=stats_radius, fill='red'))
- dwg.add(dwg.text(str(effect.get('amount')), insert=(x_effect_pos, row_1_base_y + stats_radius + 9), text_anchor='middle', fill='white', font_size='24px', font_weight="bold", font_family='Helvetica'))
- row_1_nb_effects_applied += 1
+# for effect in base_effects:
+# if effect.get('effect') == 'damage':
+# # if card_effects.get('damage'):
+# x_effect_pos = x_width/2 + row_1_x_offset + row_1_x_step*row_1_nb_effects_applied
+# dwg.add(dwg.circle(center=(x_effect_pos, row_1_base_y + stats_radius), r=stats_radius, fill='red'))
+# dwg.add(dwg.text(str(effect.get('amount')), insert=(x_effect_pos, row_1_base_y + stats_radius + 9), text_anchor='middle', fill='white', font_size='24px', font_weight="bold", font_family='Helvetica'))
+# row_1_nb_effects_applied += 1
- if effect.get('effect') == 'gold':
- x_effect_pos = x_width/2 + row_1_x_offset + row_1_x_step*row_1_nb_effects_applied
- dwg.add(dwg.circle(center=(x_effect_pos, row_1_base_y + stats_radius), r=stats_radius, fill='yellow'))
- dwg.add(dwg.text(str(card_data['row_1']['gold']), insert=(x_effect_pos, row_1_base_y + stats_radius + 9), text_anchor='middle', fill='black', font_size='24px', font_weight="bold", font_family='Helvetica'))
- row_1_nb_effects_applied += 1
+# if effect.get('effect') == 'gold':
+# x_effect_pos = x_width/2 + row_1_x_offset + row_1_x_step*row_1_nb_effects_applied
+# dwg.add(dwg.circle(center=(x_effect_pos, row_1_base_y + stats_radius), r=stats_radius, fill='yellow'))
+# dwg.add(dwg.text(str(effect.get('amount')), insert=(x_effect_pos, row_1_base_y + stats_radius + 9), text_anchor='middle', fill='black', font_size='24px', font_weight="bold", font_family='Helvetica'))
+# row_1_nb_effects_applied += 1
-if card_effects.get('heal'):
- x_effect_pos = x_width/2 + row_1_x_offset + row_1_x_step*row_1_nb_effects_applied
- dwg.add(dwg.circle(center=(x_effect_pos, row_1_base_y + stats_radius), r=stats_radius, fill='green'))
- dwg.add(dwg.text(str(card_data['row_1']['heal']), insert=(x_effect_pos, row_1_base_y + stats_radius + 9), text_anchor='middle', fill='white', font_size='24px', font_weight="bold", font_family='Helvetica'))
- row_1_nb_effects_applied += 1
+# if effect.get('effect') == 'heal':
+# x_effect_pos = x_width/2 + row_1_x_offset + row_1_x_step*row_1_nb_effects_applied
+# dwg.add(dwg.circle(center=(x_effect_pos, row_1_base_y + stats_radius), r=stats_radius, fill='green'))
+# dwg.add(dwg.text(str(effect.get('amount')), insert=(x_effect_pos, row_1_base_y + stats_radius + 9), text_anchor='middle', fill='white', font_size='24px', font_weight="bold", font_family='Helvetica'))
+# row_1_nb_effects_applied += 1
+draw_effects_resources_for_row(dwg, base_effects, row_1_base_y, x_width)
-if card_data['row_2']:
+if other_effects:
# Draw row 1 to row 2 separator
dwg.add(dwg.line(start=(0 + row_1_to_2_separator_shorten_by, row_1_to_2_separator_y), end=(x_width - row_1_to_2_separator_shorten_by, row_1_to_2_separator_y), stroke='black', stroke_width=1))
+
+for effect in other_effects:
+ # TODO handle case where there is both faction combo and trash can
+
+ if effect.get('effect_type') == 'faction_combo':
+ row_2_icon_x = border_width_x + 35
+ row_2_icon_y = row_2_base_y - 5
+ dwg.add(dwg.circle(center=(row_2_icon_x + 1, row_2_icon_y + 1), r=15, fill='black'))
+ dwg.add(dwg.circle(center=(row_2_icon_x, row_2_icon_y), r=15, fill='url(#grad2)'))
+ # Draw row 2 stats
+
# Draw row 2 effect text
- # If ally effect, draw ally icon (TODO condition)
- row_2_icon_x = border_width_x + 35
- row_2_icon_y = row_2_base_y - 5
- dwg.add(dwg.circle(center=(row_2_icon_x + 1, row_2_icon_y + 1), r=15, fill='black'))
- dwg.add(dwg.circle(center=(row_2_icon_x, row_2_icon_y), r=15, fill='url(#grad2)'))
- # dwg.add(dwg.image(card_data['faction_icon'], insert=(x_width - 30 - 15, 30 - 15), size=(30, 30)))
- dwg.add(dwg.text(card_data['row_2']['effect'], insert=(x_width/2, row_2_base_y), text_anchor='middle', fill='black', font_size=str(effect_text_size) + 'px', font_family='Helvetica'))
+ effect_text_2 = ""
+ if effect.get('effect') == 'prepare':
+ effect_text_2 = "Mobilisez un champion."
+ dwg.add(dwg.text(effect_text_2, insert=(x_width/2, row_2_base_y), text_anchor='middle', fill='black', font_size=str(effect_text_size) + 'px', font_family='Helvetica'))
# Save the SVG file
dwg.save()