diff --git a/.gitignore b/.gitignore index 5d065f4..78865bb 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ tools/card_db .doit.db .mypy_cache/ .tox/ +.venv/ diff --git a/convert.ff b/convert.ff index 5d94918..c77e0c9 100755 --- a/convert.ff +++ b/convert.ff @@ -1,3 +1,3 @@ -#!/usr/local/bin/fontforge +#!/usr/bin/fontforge Open($1) Generate($1:r + ".ttf") diff --git a/img_sources/base_set.pdf b/img_sources/base_set.pdf deleted file mode 100644 index 454120a..0000000 Binary files a/img_sources/base_set.pdf and /dev/null differ diff --git a/main.py b/main.py new file mode 100644 index 0000000..d0e2683 --- /dev/null +++ b/main.py @@ -0,0 +1,22 @@ +import domdiv.main + +base_args = [ + "--papersize", "A4", + "--language", "de", + "--size", "9.5x6.25", + "--types", + "--tab-side", "left-alternate", + "--tabwidth", "4.0", + "--tab-name-align", "center", + "--order", "cost", + "--expansion-dividers", + "--centre-expansion-dividers", + "--expansion-reset-tabs", + "--expansions", "base", "alchemy", "cornucopia", "dark ages", "dominion2ndEdition", "empires", "promo", + "--no-trash", + "--group-kingdom", + "--group-special", +] +opts = domdiv.main.parse_opts(base_args) +opts = domdiv.main.clean_opts(opts) +domdiv.main.generate(opts) diff --git a/src/domdiv/card_db/cards_db.json b/src/domdiv/card_db/cards_db.json index c43def3..0e52d45 100644 --- a/src/domdiv/card_db/cards_db.json +++ b/src/domdiv/card_db/cards_db.json @@ -1378,7 +1378,6 @@ "dark ages" ], "cost": "1", - "group_tag": "Shelters", "group_top": true, "randomizer": false, "types": [ @@ -1490,7 +1489,6 @@ "dark ages" ], "cost": "1", - "group_tag": "Shelters", "randomizer": false, "types": [ "Action", @@ -1503,7 +1501,6 @@ "dark ages" ], "cost": "1", - "group_tag": "Shelters", "randomizer": false, "types": [ "Victory", diff --git a/src/domdiv/card_db/de/cards_de.json b/src/domdiv/card_db/de/cards_de.json index 0f3283b..9885fa6 100644 --- a/src/domdiv/card_db/de/cards_de.json +++ b/src/domdiv/card_db/de/cards_de.json @@ -370,37 +370,37 @@ "name": "Trank" }, "Copper": { - "description": "+1 <*COIN*>", + "description": "1 <*COIN*>", "extra": "60 Karten pro Spiel.", "name": "Kupfer" }, "Curse": { "description": "-1 <*VP*>", - "extra": "Je nach Spieleranzahl wird die folgende Anzahl an Fluchkarten offen in die Tischmitte gelegt: Bei 6 Spielern: 50 Karten, Bei 5 Spielern: 40 Karten, Bei 4 Spielern: 30 Karten, Bei 3 Spielern: 20 Karten, Bei 2 Spielern: 10 Karten", + "extra": "2 Spieler: 10 Karten
3 Spieler: 20 Karten
4 Spieler: 30 Karten
5 Spieler: 40 Karten
6 Spieler: 50 Karten", "name": "Fluch" }, "Duchy": { "description": "3 <*VP*>", - "extra": "Bei 5 und 6 Spielern: 12 Herzogtümer, Bei 3 und 4 Spielern: 12 Herzogtümer, Bei 2 Spielern: 8 Herzogtümer", + "extra": "2 Spieler: 8 Herzogtümer
3+ Spieler: 12 Herzogtümer", "name": "Herzogtum" }, "Estate": { "description": "1 <*VP*>", - "extra": "Bei 5 und 6 Spielern: 12 Anwesen, Bei 3 und 4 Spielern: 12 Anwesen, Bei 2 Spielern: 8 Anwesen", + "extra": "2 Spieler: 8 Anwesen
3+ Spieler: 12 Anwesen", "name": "Anwesen" }, "Gold": { - "description": "+3 <*COIN*>", + "description": "3 <*COIN*>", "extra": "30 Karten pro Spiel.", "name": "Gold" }, "Province": { "description": "6 <*VP*>", - "extra": "Bei 6 Spielern: 18 Provinzen, Bei 5 Spielern: 15 Provinzen, Bei 3 und 4 Spielern: 12 Provinzen, Bei 2 Spielern: 8 Provinzen", + "extra": "2 Spieler: 8 Provinzen
2 oder 3 Spieler: 12 Provinzen
5 Spieler: 15 Provinzen
6 Spieler: 18 Provinzen", "name": "Provinz" }, "Silver": { - "description": "+2 <*COIN*>", + "description": "2 <*COIN*>", "extra": "40 Karten pro Spiel.", "name": "Silber" }, diff --git a/src/domdiv/card_db/de/sets_de.json b/src/domdiv/card_db/de/sets_de.json index 1f9bf7a..93a20c8 100644 --- a/src/domdiv/card_db/de/sets_de.json +++ b/src/domdiv/card_db/de/sets_de.json @@ -20,8 +20,8 @@ "text_icon": "An" }, "base": { - "set_name": "Base", - "set_text": "This is all the basic Victory, Treasure, and Curse cards from the Dominion games and its expansions. It does not include any Victory or Treasure cards that are Kingdom cards.", + "set_name": "Basis", + "set_text": "Alle normalen Punkte-, Geld-, und Fluchkarten vom Dominion Basisspiel und Erweiterungen. Es enthält keine Punkte- oder Geldkarten die zugleich Königreichkarten sind.", "text_icon": "B" }, "cornucopia": { @@ -30,7 +30,7 @@ "text_icon": "RE" }, "cornucopia extras": { - "set_name": "Cornucopia Extras", + "set_name": "Reiche Ernte Extras", "set_text": "", "text_icon": "C" }, diff --git a/src/domdiv/main.py b/src/domdiv/main.py index 5debbce..0572cbd 100644 --- a/src/domdiv/main.py +++ b/src/domdiv/main.py @@ -1357,12 +1357,71 @@ class CardSorter(object): return card.getType().getTypeNames(), self.strip_accents(card.name) def by_cost_sort_key(self, card): - return ( + """ + Enforce color order: + 1 Action + 2 Treasure + 3 Curse + 4 Victory + 5 Event + 6 Landmark + 7 Way (?) + 8 Project (?) + 9 Ruine + 10 Hideout + 11 Hex (?) + 12 Night (?) + 13 State (?) + 14 Boon (?) + 99 Expansion + """ + types = card.getType().getTypeNames() + # order of if-statements matters! + if "Ruins" in types: + type_index = 9 + elif "Shelter" in types: + type_index = 10 + elif "Event" in types: + type_index = 5 + elif "Landmark" in types: + type_index = 6 + elif "Way" in types: + type_index = 7 + elif "Project" in types: + type_index = 8 + elif "Action" in types: + type_index = 1 + elif "Treasure" in types: + type_index = 2 + elif "Curse" in types: + type_index = 3 + elif "Victory" in types: + type_index = 4 + elif "Hex" in types: + type_index = 11 + elif "Night" in types: + type_index = 12 + elif "State" in types: + type_index = 13 + elif "Boon" in types: + type_index = 14 + elif "Expansion" in types: + type_index = 99 + else: + raise NotImplementedError(f"Unknown types {types} for card {card.name}") + + x = ( card.cardset, int(card.isExpansion()), - str(card.get_total_cost(card)), + self.baseIndex(card.name), + #card.getType().getTypeNames()[0], + type_index, + int(card.get_total_cost(card)[0]), + int(card.get_total_cost(card)[1]), + int(card.get_total_cost(card)[2]), self.strip_accents(card.name), ) + return x @staticmethod def strip_accents(s):