From 536a523f50bfdf1aa426ca895a98e455c7245969 Mon Sep 17 00:00:00 2001 From: Team3 Date: Wed, 16 Sep 2026 13:22:07 +0200 Subject: [PATCH] Dinger: Kartenspiel in Godot 4.7 Elemente, Kombos, Fallen, KI mit Vorausschau, Kampagne, Hotseat und Netzwerk, Werkstatt, Erfolge, Tagesaufgaben, Tests und Exporte. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01QPgKvy5W9WRNFHjkm5QsHx --- .github/workflows/tests.yml | 35 + .gitignore | 4 + README.md | 62 + anforderungen.md | 24 + assets/fonts/DejaVuSans-Bold.ttf | Bin 0 -> 708920 bytes assets/fonts/DejaVuSans-Bold.ttf.import | 36 + assets/fonts/DejaVuSans.ttf | Bin 0 -> 759720 bytes assets/fonts/DejaVuSans.ttf.import | 36 + data/karten.json | 2002 ++++++++++++++++++++++ export_presets.cfg | 73 + project.godot | 28 + scenes/main.tscn | 12 + scripts/ai.gd | 269 +++ scripts/ai.gd.uid | 1 + scripts/campaign.gd | 59 + scripts/campaign.gd.uid | 1 + scripts/cards.gd | 292 ++++ scripts/cards.gd.uid | 1 + scripts/challenge.gd | 33 + scripts/challenge.gd.uid | 1 + scripts/game.gd | 854 +++++++++ scripts/game.gd.uid | 1 + scripts/net.gd | 279 +++ scripts/net.gd.uid | 1 + scripts/profile.gd | 519 ++++++ scripts/profile.gd.uid | 1 + scripts/ui/achievements_screen.gd | 45 + scripts/ui/achievements_screen.gd.uid | 1 + scripts/ui/battle_fx.gd | 159 ++ scripts/ui/battle_fx.gd.uid | 1 + scripts/ui/battle_layout.gd | 40 + scripts/ui/battle_layout.gd.uid | 1 + scripts/ui/battle_screen.gd | 945 ++++++++++ scripts/ui/battle_screen.gd.uid | 1 + scripts/ui/booster_screen.gd | 122 ++ scripts/ui/booster_screen.gd.uid | 1 + scripts/ui/campaign_screen.gd | 59 + scripts/ui/campaign_screen.gd.uid | 1 + scripts/ui/card_grid.gd | 50 + scripts/ui/card_grid.gd.uid | 1 + scripts/ui/card_view.gd | 65 + scripts/ui/card_view.gd.uid | 1 + scripts/ui/creature_view.gd | 92 + scripts/ui/creature_view.gd.uid | 1 + scripts/ui/deck_screen.gd | 351 ++++ scripts/ui/deck_screen.gd.uid | 1 + scripts/ui/hotseat_screen.gd | 111 ++ scripts/ui/hotseat_screen.gd.uid | 1 + scripts/ui/lobby_screen.gd | 112 ++ scripts/ui/lobby_screen.gd.uid | 1 + scripts/ui/main.gd | 52 + scripts/ui/main.gd.uid | 1 + scripts/ui/menu_screen.gd | 84 + scripts/ui/menu_screen.gd.uid | 1 + scripts/ui/opponent_select_screen.gd | 29 + scripts/ui/opponent_select_screen.gd.uid | 1 + scripts/ui/rules_screen.gd | 25 + scripts/ui/rules_screen.gd.uid | 1 + scripts/ui/settings_screen.gd | 121 ++ scripts/ui/settings_screen.gd.uid | 1 + scripts/ui/sfx.gd | 107 ++ scripts/ui/sfx.gd.uid | 1 + scripts/ui/style.gd | 365 ++++ scripts/ui/style.gd.uid | 1 + scripts/ui/workshop_screen.gd | 151 ++ scripts/ui/workshop_screen.gd.uid | 1 + tests/dump_cards.gd | 11 + tests/dump_cards.gd.uid | 1 + tests/matchup.gd | 35 + tests/matchup.gd.uid | 1 + tests/net_bot.gd | 65 + tests/net_bot.gd.uid | 1 + tests/net_bot.tscn | 6 + tests/run_headless.sh | 8 + tests/simulate.gd | 43 + tests/simulate.gd.uid | 1 + tests/test_runner.gd | 1198 +++++++++++++ tests/test_runner.gd.uid | 1 + tests/ui_test.gd | 674 ++++++++ tests/ui_test.gd.uid | 1 + tests/ui_test.tscn | 6 + translations/ui.csv | 59 + translations/ui.csv.import | 19 + translations/ui.en.translation | Bin 0 -> 2608 bytes 84 files changed, 9859 insertions(+) create mode 100644 .github/workflows/tests.yml create mode 100644 .gitignore create mode 100644 README.md create mode 100644 anforderungen.md create mode 100644 assets/fonts/DejaVuSans-Bold.ttf create mode 100644 assets/fonts/DejaVuSans-Bold.ttf.import create mode 100644 assets/fonts/DejaVuSans.ttf create mode 100644 assets/fonts/DejaVuSans.ttf.import create mode 100644 data/karten.json create mode 100644 export_presets.cfg create mode 100644 project.godot create mode 100644 scenes/main.tscn create mode 100644 scripts/ai.gd create mode 100644 scripts/ai.gd.uid create mode 100644 scripts/campaign.gd create mode 100644 scripts/campaign.gd.uid create mode 100644 scripts/cards.gd create mode 100644 scripts/cards.gd.uid create mode 100644 scripts/challenge.gd create mode 100644 scripts/challenge.gd.uid create mode 100644 scripts/game.gd create mode 100644 scripts/game.gd.uid create mode 100644 scripts/net.gd create mode 100644 scripts/net.gd.uid create mode 100644 scripts/profile.gd create mode 100644 scripts/profile.gd.uid create mode 100644 scripts/ui/achievements_screen.gd create mode 100644 scripts/ui/achievements_screen.gd.uid create mode 100644 scripts/ui/battle_fx.gd create mode 100644 scripts/ui/battle_fx.gd.uid create mode 100644 scripts/ui/battle_layout.gd create mode 100644 scripts/ui/battle_layout.gd.uid create mode 100644 scripts/ui/battle_screen.gd create mode 100644 scripts/ui/battle_screen.gd.uid create mode 100644 scripts/ui/booster_screen.gd create mode 100644 scripts/ui/booster_screen.gd.uid create mode 100644 scripts/ui/campaign_screen.gd create mode 100644 scripts/ui/campaign_screen.gd.uid create mode 100644 scripts/ui/card_grid.gd create mode 100644 scripts/ui/card_grid.gd.uid create mode 100644 scripts/ui/card_view.gd create mode 100644 scripts/ui/card_view.gd.uid create mode 100644 scripts/ui/creature_view.gd create mode 100644 scripts/ui/creature_view.gd.uid create mode 100644 scripts/ui/deck_screen.gd create mode 100644 scripts/ui/deck_screen.gd.uid create mode 100644 scripts/ui/hotseat_screen.gd create mode 100644 scripts/ui/hotseat_screen.gd.uid create mode 100644 scripts/ui/lobby_screen.gd create mode 100644 scripts/ui/lobby_screen.gd.uid create mode 100644 scripts/ui/main.gd create mode 100644 scripts/ui/main.gd.uid create mode 100644 scripts/ui/menu_screen.gd create mode 100644 scripts/ui/menu_screen.gd.uid create mode 100644 scripts/ui/opponent_select_screen.gd create mode 100644 scripts/ui/opponent_select_screen.gd.uid create mode 100644 scripts/ui/rules_screen.gd create mode 100644 scripts/ui/rules_screen.gd.uid create mode 100644 scripts/ui/settings_screen.gd create mode 100644 scripts/ui/settings_screen.gd.uid create mode 100644 scripts/ui/sfx.gd create mode 100644 scripts/ui/sfx.gd.uid create mode 100644 scripts/ui/style.gd create mode 100644 scripts/ui/style.gd.uid create mode 100644 scripts/ui/workshop_screen.gd create mode 100644 scripts/ui/workshop_screen.gd.uid create mode 100644 tests/dump_cards.gd create mode 100644 tests/dump_cards.gd.uid create mode 100644 tests/matchup.gd create mode 100644 tests/matchup.gd.uid create mode 100644 tests/net_bot.gd create mode 100644 tests/net_bot.gd.uid create mode 100644 tests/net_bot.tscn create mode 100755 tests/run_headless.sh create mode 100644 tests/simulate.gd create mode 100644 tests/simulate.gd.uid create mode 100644 tests/test_runner.gd create mode 100644 tests/test_runner.gd.uid create mode 100644 tests/ui_test.gd create mode 100644 tests/ui_test.gd.uid create mode 100644 tests/ui_test.tscn create mode 100644 translations/ui.csv create mode 100644 translations/ui.csv.import create mode 100644 translations/ui.en.translation diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..e6ea0eb --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,35 @@ +name: Tests + +on: [push, pull_request] + +jobs: + headless: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Godot laden + run: | + curl -sSL -o godot.zip https://github.com/godotengine/godot/releases/download/4.7.2-stable/Godot_v4.7.2-stable_linux.x86_64.zip + unzip -q godot.zip + mv Godot_v4.7.2-stable_linux.x86_64 godot + chmod +x godot + - name: Tests + run: ./tests/run_headless.sh ./godot + + fenster: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Godot und Xvfb laden + run: | + curl -sSL -o godot.zip https://github.com/godotengine/godot/releases/download/4.7.2-stable/Godot_v4.7.2-stable_linux.x86_64.zip + unzip -q godot.zip + mv Godot_v4.7.2-stable_linux.x86_64 godot + chmod +x godot + sudo apt-get update -qq && sudo apt-get install -y -qq xvfb libgl1 libegl1 + - name: Import + run: ./godot --headless --path . --import || true + - name: Fenster-Test (virtueller Bildschirm) + run: xvfb-run -a --server-args="-screen 0 1280x800x24" ./godot --path . tests/ui_test.tscn 2>&1 | tee fenster.log | grep -E "FEHLER|Prüfungen" || true + - name: Ergebnis + run: grep -q " 0 fehlgeschlagen" fenster.log diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..54134c6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.godot/ +build/ +python/.venv/ +python/**/__pycache__/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..d2cf8e5 --- /dev/null +++ b/README.md @@ -0,0 +1,62 @@ +# Dinger + +Kartenspiel in 2D (Godot 4.7): du und 1 bis 5 KI-Magier, jeder gegen jeden, alle mit denselben Regeln. + +## Start + +Projektordner in Godot öffnen und auf „Play“ drücken, oder im Terminal: + +``` +godot --path . +``` + +Der Spielstand liegt unter `user://spielstand.json` +(Linux: `~/.local/share/godot/app_userdata/Dinger/spielstand.json`). + +## Spielsysteme + +- 100 Karten in `data/karten.json`: 4 Elemente, 10 Zweier-Kombos (auch gleiche Elemente), 4 mythische Dreifach-Kombos, 4 Fallen +- Resonanz: gleiche Elemente auf dem Feld verstärken sich. Feldkombos: verschiedene Elemente lösen beim Ausspielen Effekte aus +- Fallen liegen verdeckt und lösen im gegnerischen Zug aus (die KI kennt fremde Fallen nicht) +- Jeder gegen jeden mit ausgeloster Zugreihenfolge, 1 bis 5 KI-Gegner (KI mit Vorausschau), Kampagne mit 10 Magiern, Erfolge, Tagesaufgabe +- Lokal zu mehreren: bis zu 4 Menschen am selben Rechner plus KI +- Booster, fünf Deck-Slots, Werkstatt (Zerlegen und Herstellen aus Staub), Einstellungen (Ton, KI-Tempo, Animationen) +- Spielstand versioniert mit Sicherungskopie (`spielstand.json.bak`) +- Anleitung (geführte erste Partie), Mulligan im ersten Zug, Tastatur (Leertaste, 1 bis 9, Esc, Enter) +- Kampagnen-Bosse mit Merkmalen, Kartenstatistik, zwölf Tagesaufgaben, Pity-Zähler für mythische Karten +- Netzwerkspiel im lokalen Netz (Host führt das Spiel, Mitspieler sehen nur ihre Hand) +- Deck-Namen, Auto-Ausfüllen, Hintergrundmusik und Oberfläche wahlweise auf Englisch + +## Tests + +`tests/run_headless.sh` führt Import und Headless-Prüfungen aus (auch in `.github/workflows/tests.yml`). + +``` +godot --headless --path . --import # einmalig: Ressourcen importieren +godot --headless --path . -s tests/test_runner.gd # Regeln, KI, Booster, Spielstand +godot --headless --path . -s tests/simulate.gd # Balance: KI spielt gegen KI +godot --headless --path . -s tests/matchup.gd # Startvorteil und Mono gegen Paar +godot --headless --path . -s tests/dump_cards.gd # Kartenpool aus Code nach JSON schreiben (nur bei Bedarf) +DINGER_SHOTS=/tmp/shots godot --path . tests/ui_test.tscn # Oberfläche mit Fenster und Screenshots +``` + +## Export + +Export-Vorlagen für Godot 4.7 installieren (Editor: Editor → Export-Vorlagen verwalten), dann: + +``` +godot --headless --path . --export-release Linux build/dinger-linux.x86_64 +godot --headless --path . --export-release Windows build/dinger-windows.exe +``` + +## Aufbau + +- `scripts/cards.gd` – Elemente, Kombos, Kartenklassen; Pool aus `data/karten.json` +- `scripts/game.gd` – Spielregeln, Züge, Kampf, Fallen, Feldkombos, Resonanz, Deckregeln, Gegner, Hotseat +- `scripts/ai.gd` – KI mit Vorausschau (plus gierige Vergleichs-KI) +- `scripts/profile.gd` – Spielstand (versioniert), Booster, Erfolge, Tagesaufgabe, Einstellungen +- `scripts/campaign.gd` – Kampagnenstufen +- `scripts/ui/` – Oberfläche: Menü, Gegnerauswahl, Kampagne, Hotseat, Lobby, Booster, Deckbau, Werkstatt, Kampf (Bildschirm, Layout, Effekte), Erfolge, Einstellungen, Regeln, Ton +- `scenes/main.tscn` – Startszene +- `scripts/net.gd` – Netzwerkspiel (ENet) +- `translations/ui.csv` – englische Oberflächentexte diff --git a/anforderungen.md b/anforderungen.md new file mode 100644 index 0000000..533b399 --- /dev/null +++ b/anforderungen.md @@ -0,0 +1,24 @@ +# Dinger + +## Grundidee +- Kartenspiel wie zum Beispiel Magic +- PC-Spiel +- Jeder gegen jeden: Spieler und 1 bis 5 KI-Gegner (oder Spieler), alle mit gleichen Regeln +- Einzelspieler-Knopf führt zur Auswahl der Gegnerzahl +- Kampagne gegen benannte Magier, Erfolge und Tagesaufgaben als Fortschritt +- Lokal zu mehreren am selben Rechner und im lokalen Netz möglich +- Geführte erste Partie als Einstieg + +## Sammeln +- Booster öffnen +- Karten haben Seltenheiten +- Aus der Sammlung werden Decks gebaut (mehrere Slots) +- Überschüssige Karten lassen sich zerlegen und neue herstellen + +## Elemente +- Karten gehören zu Elementen +- Elemente sind kombinierbar, daraus entstehen viele Varianten +- Gleiche Elemente sind auch eine Kombo (Feuer + Feuer) +- Jedes Element und jede Kombo hat eine eigene Spielweise +- Elemente wirken auf dem Feld zusammen: gleiche verstärken sich (Resonanz), verschiedene lösen Feldkombos aus +- Verdeckte Fallen bringen Bluff und Reaktion im gegnerischen Zug diff --git a/assets/fonts/DejaVuSans-Bold.ttf b/assets/fonts/DejaVuSans-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..426812b9b0ce12f20285adf46d8acc0dd40dfba5 GIT binary patch literal 708920 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

bWX)$=b_C=1*`tbeHIj!z`wA06$ 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

sLSN+iZ-}2x%`hQvQob2Oc+tg&N$xY*HS@2x( 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≷~ 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 R{CDK{Ml=4ut$4|i-vzy0TUY=9 literal 0 HcmV?d00001 diff --git a/assets/fonts/DejaVuSans-Bold.ttf.import b/assets/fonts/DejaVuSans-Bold.ttf.import new file mode 100644 index 0000000..3c53181 --- /dev/null +++ b/assets/fonts/DejaVuSans-Bold.ttf.import @@ -0,0 +1,36 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://jqogbchdskrc" +path="res://.godot/imported/DejaVuSans-Bold.ttf-28339d4fde761e3a49fa62b16c3f5900.fontdata" + +[deps] + +source_file="res://assets/fonts/DejaVuSans-Bold.ttf" +dest_files=["res://.godot/imported/DejaVuSans-Bold.ttf-28339d4fde761e3a49fa62b16c3f5900.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +modulate_color_glyphs=false +hinting=3 +subpixel_positioning=4 +keep_rounding_remainders=true +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/assets/fonts/DejaVuSans.ttf b/assets/fonts/DejaVuSans.ttf new file mode 100644 index 0000000000000000000000000000000000000000..fb0bd945a4f5aa716dcb8d9b7476bfa30e365a1e GIT binary patch literal 759720 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

`(=x&I*~6l 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

G|I7;}!J!KJ*x{#{NOi_vOz6PmZSNYw0oA9IASH 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 literal 0 HcmV?d00001 diff --git a/assets/fonts/DejaVuSans.ttf.import b/assets/fonts/DejaVuSans.ttf.import new file mode 100644 index 0000000..7782bc6 --- /dev/null +++ b/assets/fonts/DejaVuSans.ttf.import @@ -0,0 +1,36 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://l7leg081apqp" +path="res://.godot/imported/DejaVuSans.ttf-0dcd47e426510e02f045e926ff1bfdf0.fontdata" + +[deps] + +source_file="res://assets/fonts/DejaVuSans.ttf" +dest_files=["res://.godot/imported/DejaVuSans.ttf-0dcd47e426510e02f045e926ff1bfdf0.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +modulate_color_glyphs=false +hinting=3 +subpixel_positioning=4 +keep_rounding_remainders=true +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/data/karten.json b/data/karten.json new file mode 100644 index 0000000..8b2eca9 --- /dev/null +++ b/data/karten.json @@ -0,0 +1,2002 @@ +{ + "karten": [ + { + "id": "f_funke", + "name": "Funke", + "elements": [ + "Feuer" + ], + "cost": 1, + "rarity": "gewöhnlich", + "kind": "Zauber", + "effects": [ + { + "kind": "damage", + "target": "enemy_any", + "amount": 2 + } + ] + }, + { + "id": "f_kobold", + "name": "Feuerkobold", + "elements": [ + "Feuer" + ], + "cost": 1, + "rarity": "gewöhnlich", + "kind": "Wesen", + "attack": 2, + "health": 1 + }, + { + "id": "f_wolf", + "name": "Flammenwolf", + "elements": [ + "Feuer" + ], + "cost": 2, + "rarity": "gewöhnlich", + "kind": "Wesen", + "attack": 3, + "health": 2 + }, + { + "id": "f_feuerball", + "name": "Feuerball", + "elements": [ + "Feuer" + ], + "cost": 3, + "rarity": "gewöhnlich", + "kind": "Zauber", + "effects": [ + { + "kind": "damage", + "target": "enemy_any", + "amount": 4 + } + ] + }, + { + "id": "f_asche", + "name": "Aschekrieger", + "elements": [ + "Feuer" + ], + "cost": 3, + "rarity": "gewöhnlich", + "kind": "Wesen", + "attack": 4, + "health": 2 + }, + { + "id": "f_drache", + "name": "Feuerdrache", + "elements": [ + "Feuer" + ], + "cost": 5, + "rarity": "selten", + "kind": "Wesen", + "attack": 6, + "health": 4, + "effects": [ + { + "kind": "damage", + "target": "all_enemy_creatures", + "amount": 2 + } + ] + }, + { + "id": "w_eis", + "name": "Eissplitter", + "elements": [ + "Wasser" + ], + "cost": 1, + "rarity": "gewöhnlich", + "kind": "Zauber", + "effects": [ + { + "kind": "freeze", + "target": "enemy_creature" + } + ] + }, + { + "id": "w_geist", + "name": "Flussgeist", + "elements": [ + "Wasser" + ], + "cost": 1, + "rarity": "gewöhnlich", + "kind": "Wesen", + "attack": 1, + "health": 2, + "effects": [ + { + "kind": "draw", + "target": "none", + "amount": 1 + } + ] + }, + { + "id": "w_reiter", + "name": "Wellenreiter", + "elements": [ + "Wasser" + ], + "cost": 2, + "rarity": "gewöhnlich", + "kind": "Wesen", + "attack": 2, + "health": 3 + }, + { + "id": "w_gezeiten", + "name": "Gezeiten", + "elements": [ + "Wasser" + ], + "cost": 2, + "rarity": "gewöhnlich", + "kind": "Zauber", + "effects": [ + { + "kind": "draw", + "target": "none", + "amount": 2 + } + ] + }, + { + "id": "w_frost", + "name": "Frostmagier", + "elements": [ + "Wasser" + ], + "cost": 3, + "rarity": "gewöhnlich", + "kind": "Wesen", + "attack": 2, + "health": 4, + "effects": [ + { + "kind": "freeze", + "target": "enemy_creature" + } + ] + }, + { + "id": "w_kraken", + "name": "Kraken", + "elements": [ + "Wasser" + ], + "cost": 5, + "rarity": "selten", + "kind": "Wesen", + "attack": 4, + "health": 6, + "effects": [ + { + "kind": "freeze", + "target": "all_enemy_creatures" + } + ] + }, + { + "id": "e_wall", + "name": "Steinwall", + "elements": [ + "Erde" + ], + "cost": 1, + "rarity": "gewöhnlich", + "kind": "Wesen", + "attack": 0, + "health": 4, + "keywords": [ + "Wächter" + ] + }, + { + "id": "e_wurzel", + "name": "Wurzelwächter", + "elements": [ + "Erde" + ], + "cost": 2, + "rarity": "gewöhnlich", + "kind": "Wesen", + "attack": 2, + "health": 4, + "keywords": [ + "Wächter" + ] + }, + { + "id": "e_haerten", + "name": "Verhärten", + "elements": [ + "Erde" + ], + "cost": 2, + "rarity": "gewöhnlich", + "kind": "Zauber", + "effects": [ + { + "kind": "buff", + "target": "friendly_creature", + "amount": 2, + "amount2": 2 + } + ] + }, + { + "id": "e_golem", + "name": "Felsgolem", + "elements": [ + "Erde" + ], + "cost": 3, + "rarity": "gewöhnlich", + "kind": "Wesen", + "attack": 3, + "health": 5 + }, + { + "id": "e_troll", + "name": "Bergtroll", + "elements": [ + "Erde" + ], + "cost": 4, + "rarity": "gewöhnlich", + "kind": "Wesen", + "attack": 4, + "health": 6, + "keywords": [ + "Wächter" + ] + }, + { + "id": "e_baum", + "name": "Uralter Baum", + "elements": [ + "Erde" + ], + "cost": 5, + "rarity": "selten", + "kind": "Wesen", + "attack": 3, + "health": 9, + "keywords": [ + "Wächter" + ], + "effects": [ + { + "kind": "heal", + "target": "self_hero", + "amount": 5 + } + ] + }, + { + "id": "l_wind", + "name": "Windgeist", + "elements": [ + "Luft" + ], + "cost": 1, + "rarity": "gewöhnlich", + "kind": "Wesen", + "attack": 1, + "health": 1, + "keywords": [ + "Flink" + ] + }, + { + "id": "l_falke", + "name": "Falke", + "elements": [ + "Luft" + ], + "cost": 2, + "rarity": "gewöhnlich", + "kind": "Wesen", + "attack": 3, + "health": 1, + "keywords": [ + "Flink" + ] + }, + { + "id": "l_stoss", + "name": "Windstoß", + "elements": [ + "Luft" + ], + "cost": 2, + "rarity": "gewöhnlich", + "kind": "Zauber", + "effects": [ + { + "kind": "bounce", + "target": "enemy_creature" + } + ] + }, + { + "id": "l_taenzer", + "name": "Sturmtänzer", + "elements": [ + "Luft" + ], + "cost": 3, + "rarity": "gewöhnlich", + "kind": "Wesen", + "attack": 3, + "health": 3, + "keywords": [ + "Flink" + ] + }, + { + "id": "l_schlange", + "name": "Luftschlange", + "elements": [ + "Luft" + ], + "cost": 3, + "rarity": "gewöhnlich", + "kind": "Wesen", + "attack": 2, + "health": 2, + "keywords": [ + "Doppelschlag" + ] + }, + { + "id": "l_greif", + "name": "Greif", + "elements": [ + "Luft" + ], + "cost": 5, + "rarity": "selten", + "kind": "Wesen", + "attack": 5, + "health": 4, + "keywords": [ + "Flink" + ], + "effects": [ + { + "kind": "draw", + "target": "none", + "amount": 1 + } + ] + }, + { + "id": "ff_walze", + "name": "Flammenwalze", + "elements": [ + "Feuer", + "Feuer" + ], + "cost": 4, + "rarity": "selten", + "kind": "Zauber", + "effects": [ + { + "kind": "damage", + "target": "all_enemy_creatures", + "amount": 3 + } + ] + }, + { + "id": "ff_elementar", + "name": "Inferno-Elementar", + "elements": [ + "Feuer", + "Feuer" + ], + "cost": 6, + "rarity": "episch", + "kind": "Wesen", + "attack": 7, + "health": 5, + "effects": [ + { + "kind": "damage", + "target": "all_enemy_heroes", + "amount": 3 + } + ] + }, + { + "id": "ff_phoenix", + "name": "Phönix", + "elements": [ + "Feuer", + "Feuer" + ], + "cost": 7, + "rarity": "legendär", + "kind": "Wesen", + "attack": 8, + "health": 6, + "keywords": [ + "Flink" + ], + "effects": [ + { + "kind": "damage", + "target": "all_enemies", + "amount": 4 + } + ] + }, + { + "id": "ww_eiszeit", + "name": "Eiszeit", + "elements": [ + "Wasser", + "Wasser" + ], + "cost": 4, + "rarity": "selten", + "kind": "Zauber", + "effects": [ + { + "kind": "freeze", + "target": "all_enemy_creatures" + }, + { + "kind": "draw", + "target": "none", + "amount": 1 + } + ] + }, + { + "id": "ww_schrecken", + "name": "Tiefseeschrecken", + "elements": [ + "Wasser", + "Wasser" + ], + "cost": 6, + "rarity": "episch", + "kind": "Wesen", + "attack": 5, + "health": 7, + "effects": [ + { + "kind": "draw", + "target": "none", + "amount": 2 + } + ] + }, + { + "id": "ww_leviathan", + "name": "Leviathan", + "elements": [ + "Wasser", + "Wasser" + ], + "cost": 8, + "rarity": "legendär", + "kind": "Wesen", + "attack": 8, + "health": 8, + "keywords": [ + "Wächter" + ], + "effects": [ + { + "kind": "draw", + "target": "none", + "amount": 2 + }, + { + "kind": "heal", + "target": "self_hero", + "amount": 5 + } + ] + }, + { + "id": "ee_bastion", + "name": "Felsbastion", + "elements": [ + "Erde", + "Erde" + ], + "cost": 3, + "rarity": "selten", + "kind": "Wesen", + "attack": 1, + "health": 7, + "keywords": [ + "Wächter", + "Schild" + ] + }, + { + "id": "ee_riese", + "name": "Bergriese", + "elements": [ + "Erde", + "Erde" + ], + "cost": 6, + "rarity": "episch", + "kind": "Wesen", + "attack": 6, + "health": 9, + "keywords": [ + "Wächter" + ] + }, + { + "id": "ee_titan", + "name": "Titan der Erde", + "elements": [ + "Erde", + "Erde" + ], + "cost": 8, + "rarity": "legendär", + "kind": "Wesen", + "attack": 8, + "health": 12, + "keywords": [ + "Wächter", + "Schild" + ], + "effects": [ + { + "kind": "heal", + "target": "self_hero", + "amount": 6 + } + ] + }, + { + "id": "ll_wirbel", + "name": "Wirbelsturm", + "elements": [ + "Luft", + "Luft" + ], + "cost": 3, + "rarity": "selten", + "kind": "Zauber", + "effects": [ + { + "kind": "bounce", + "target": "enemy_creature" + }, + { + "kind": "draw", + "target": "none", + "amount": 1 + } + ] + }, + { + "id": "ll_adler", + "name": "Sturmadler", + "elements": [ + "Luft", + "Luft" + ], + "cost": 5, + "rarity": "episch", + "kind": "Wesen", + "attack": 4, + "health": 4, + "keywords": [ + "Flink", + "Doppelschlag" + ] + }, + { + "id": "ll_herr", + "name": "Herr der Winde", + "elements": [ + "Luft", + "Luft" + ], + "cost": 7, + "rarity": "legendär", + "kind": "Wesen", + "attack": 6, + "health": 6, + "keywords": [ + "Flink", + "Doppelschlag" + ], + "effects": [ + { + "kind": "draw", + "target": "none", + "amount": 2 + } + ] + }, + { + "id": "fw_wolke", + "name": "Dampfwolke", + "elements": [ + "Feuer", + "Wasser" + ], + "cost": 2, + "rarity": "selten", + "kind": "Zauber", + "effects": [ + { + "kind": "damage", + "target": "enemy_creature", + "amount": 2 + }, + { + "kind": "freeze", + "target": "enemy_creature" + } + ] + }, + { + "id": "fw_kessel", + "name": "Kesselgeist", + "elements": [ + "Feuer", + "Wasser" + ], + "cost": 4, + "rarity": "episch", + "kind": "Wesen", + "attack": 3, + "health": 4, + "effects": [ + { + "kind": "damage", + "target": "enemy_any", + "amount": 2 + }, + { + "kind": "draw", + "target": "none", + "amount": 1 + } + ] + }, + { + "id": "fw_geysir", + "name": "Geysir-Drache", + "elements": [ + "Feuer", + "Wasser" + ], + "cost": 7, + "rarity": "legendär", + "kind": "Wesen", + "attack": 6, + "health": 6, + "effects": [ + { + "kind": "damage", + "target": "all_enemy_creatures", + "amount": 3 + }, + { + "kind": "freeze", + "target": "all_enemy_creatures" + } + ] + }, + { + "id": "fe_golem", + "name": "Lavagolem", + "elements": [ + "Feuer", + "Erde" + ], + "cost": 3, + "rarity": "selten", + "kind": "Wesen", + "attack": 3, + "health": 4, + "effects": [ + { + "kind": "damage", + "target": "all_enemy_creatures", + "amount": 1 + } + ] + }, + { + "id": "fe_wall", + "name": "Magmawall", + "elements": [ + "Feuer", + "Erde" + ], + "cost": 5, + "rarity": "episch", + "kind": "Wesen", + "attack": 2, + "health": 8, + "keywords": [ + "Wächter" + ], + "effects": [ + { + "kind": "damage", + "target": "all_enemy_creatures", + "amount": 2 + } + ] + }, + { + "id": "fe_vulkan", + "name": "Vulkanherz", + "elements": [ + "Feuer", + "Erde" + ], + "cost": 7, + "rarity": "legendär", + "kind": "Wesen", + "attack": 7, + "health": 8, + "keywords": [ + "Wächter" + ], + "effects": [ + { + "kind": "damage", + "target": "enemy_any", + "amount": 4 + } + ] + }, + { + "id": "fl_schlag", + "name": "Blitzschlag", + "elements": [ + "Feuer", + "Luft" + ], + "cost": 2, + "rarity": "selten", + "kind": "Zauber", + "effects": [ + { + "kind": "damage", + "target": "enemy_any", + "amount": 3 + } + ] + }, + { + "id": "fl_vogel", + "name": "Donnervogel", + "elements": [ + "Feuer", + "Luft" + ], + "cost": 4, + "rarity": "episch", + "kind": "Wesen", + "attack": 3, + "health": 2, + "keywords": [ + "Flink", + "Doppelschlag" + ] + }, + { + "id": "fl_gott", + "name": "Gewittergott", + "elements": [ + "Feuer", + "Luft" + ], + "cost": 7, + "rarity": "legendär", + "kind": "Wesen", + "attack": 7, + "health": 5, + "keywords": [ + "Flink" + ], + "effects": [ + { + "kind": "damage", + "target": "all_enemy_heroes", + "amount": 3 + } + ] + }, + { + "id": "we_kroete", + "name": "Sumpfkröte", + "elements": [ + "Wasser", + "Erde" + ], + "cost": 2, + "rarity": "selten", + "kind": "Wesen", + "attack": 1, + "health": 5, + "keywords": [ + "Wächter" + ], + "effects": [ + { + "kind": "freeze", + "target": "enemy_creature" + } + ] + }, + { + "id": "we_moor", + "name": "Moorwächter", + "elements": [ + "Wasser", + "Erde" + ], + "cost": 5, + "rarity": "episch", + "kind": "Wesen", + "attack": 3, + "health": 8, + "keywords": [ + "Wächter", + "Schild" + ] + }, + { + "id": "we_koloss", + "name": "Sumpfkoloss", + "elements": [ + "Wasser", + "Erde" + ], + "cost": 8, + "rarity": "legendär", + "kind": "Wesen", + "attack": 5, + "health": 14, + "keywords": [ + "Wächter", + "Schild" + ], + "effects": [ + { + "kind": "freeze", + "target": "all_enemy_creatures" + } + ] + }, + { + "id": "wl_boe", + "name": "Sturmbö", + "elements": [ + "Wasser", + "Luft" + ], + "cost": 2, + "rarity": "selten", + "kind": "Zauber", + "effects": [ + { + "kind": "freeze", + "target": "enemy_creature" + }, + { + "kind": "draw", + "target": "none", + "amount": 1 + } + ] + }, + { + "id": "wl_nebel", + "name": "Nebelreiter", + "elements": [ + "Wasser", + "Luft" + ], + "cost": 4, + "rarity": "episch", + "kind": "Wesen", + "attack": 3, + "health": 3, + "keywords": [ + "Flink" + ], + "effects": [ + { + "kind": "bounce", + "target": "enemy_creature" + } + ] + }, + { + "id": "wl_koenigin", + "name": "Sturmkönigin", + "elements": [ + "Wasser", + "Luft" + ], + "cost": 7, + "rarity": "legendär", + "kind": "Wesen", + "attack": 5, + "health": 6, + "keywords": [ + "Flink" + ], + "effects": [ + { + "kind": "bounce", + "target": "all_enemy_creatures" + } + ] + }, + { + "id": "el_laeufer", + "name": "Sandläufer", + "elements": [ + "Erde", + "Luft" + ], + "cost": 2, + "rarity": "selten", + "kind": "Wesen", + "attack": 2, + "health": 3, + "keywords": [ + "Flink", + "Schild" + ] + }, + { + "id": "el_duene", + "name": "Dünenwächter", + "elements": [ + "Erde", + "Luft" + ], + "cost": 4, + "rarity": "episch", + "kind": "Wesen", + "attack": 3, + "health": 5, + "keywords": [ + "Wächter", + "Flink" + ] + }, + { + "id": "el_koenig", + "name": "Wüstenkönig", + "elements": [ + "Erde", + "Luft" + ], + "cost": 7, + "rarity": "legendär", + "kind": "Wesen", + "attack": 6, + "health": 8, + "keywords": [ + "Wächter", + "Flink", + "Schild" + ], + "effects": [ + { + "kind": "buff", + "target": "all_friendly_creatures", + "amount": 1, + "amount2": 1 + } + ] + }, + { + "id": "f_glutpfeil", + "name": "Glutpfeil", + "elements": [ + "Feuer" + ], + "cost": 2, + "rarity": "gewöhnlich", + "kind": "Zauber", + "effects": [ + { + "kind": "damage", + "target": "enemy_creature", + "amount": 3 + } + ] + }, + { + "id": "f_elementar", + "name": "Feuerelementar", + "elements": [ + "Feuer" + ], + "cost": 4, + "rarity": "gewöhnlich", + "kind": "Wesen", + "attack": 5, + "health": 3 + }, + { + "id": "f_ritter", + "name": "Lodernder Ritter", + "elements": [ + "Feuer" + ], + "cost": 4, + "rarity": "selten", + "kind": "Wesen", + "attack": 3, + "health": 3, + "keywords": [ + "Flink" + ], + "effects": [ + { + "kind": "damage", + "target": "enemy_any", + "amount": 1 + } + ] + }, + { + "id": "f_sturm", + "name": "Flammensturm", + "elements": [ + "Feuer" + ], + "cost": 6, + "rarity": "selten", + "kind": "Zauber", + "effects": [ + { + "kind": "damage", + "target": "all_enemy_creatures", + "amount": 4 + } + ] + }, + { + "id": "w_schild", + "name": "Gezeitenschild", + "elements": [ + "Wasser" + ], + "cost": 1, + "rarity": "gewöhnlich", + "kind": "Zauber", + "effects": [ + { + "kind": "buff", + "target": "friendly_creature", + "amount2": 3 + } + ] + }, + { + "id": "w_qualle", + "name": "Quallenschwarm", + "elements": [ + "Wasser" + ], + "cost": 2, + "rarity": "gewöhnlich", + "kind": "Wesen", + "attack": 2, + "health": 2, + "effects": [ + { + "kind": "draw", + "target": "none", + "amount": 1 + } + ] + }, + { + "id": "w_tiefen", + "name": "Tiefenwächter", + "elements": [ + "Wasser" + ], + "cost": 4, + "rarity": "gewöhnlich", + "kind": "Wesen", + "attack": 3, + "health": 6, + "keywords": [ + "Wächter" + ] + }, + { + "id": "w_flut", + "name": "Flutwelle", + "elements": [ + "Wasser" + ], + "cost": 5, + "rarity": "selten", + "kind": "Zauber", + "effects": [ + { + "kind": "freeze", + "target": "all_enemy_creatures" + }, + { + "kind": "heal", + "target": "self_hero", + "amount": 3 + } + ] + }, + { + "id": "e_steinhaut", + "name": "Steinhaut", + "elements": [ + "Erde" + ], + "cost": 1, + "rarity": "gewöhnlich", + "kind": "Zauber", + "effects": [ + { + "kind": "shield", + "target": "friendly_creature" + } + ] + }, + { + "id": "e_kiesel", + "name": "Kieselgolem", + "elements": [ + "Erde" + ], + "cost": 2, + "rarity": "gewöhnlich", + "kind": "Wesen", + "attack": 2, + "health": 3 + }, + { + "id": "e_hirte", + "name": "Baumhirte", + "elements": [ + "Erde" + ], + "cost": 4, + "rarity": "selten", + "kind": "Wesen", + "attack": 2, + "health": 6, + "keywords": [ + "Wächter" + ], + "effects": [ + { + "kind": "heal", + "target": "self_hero", + "amount": 3 + } + ] + }, + { + "id": "e_beben", + "name": "Erdbeben", + "elements": [ + "Erde" + ], + "cost": 5, + "rarity": "selten", + "kind": "Zauber", + "effects": [ + { + "kind": "damage", + "target": "all_enemy_creatures", + "amount": 2 + }, + { + "kind": "buff", + "target": "all_friendly_creatures", + "amount2": 2 + } + ] + }, + { + "id": "l_brise", + "name": "Brise", + "elements": [ + "Luft" + ], + "cost": 1, + "rarity": "gewöhnlich", + "kind": "Zauber", + "effects": [ + { + "kind": "draw", + "target": "none", + "amount": 1 + } + ] + }, + { + "id": "l_fuchs", + "name": "Wolkenfuchs", + "elements": [ + "Luft" + ], + "cost": 2, + "rarity": "gewöhnlich", + "kind": "Wesen", + "attack": 2, + "health": 2, + "keywords": [ + "Flink" + ] + }, + { + "id": "l_himmel", + "name": "Himmelsstoß", + "elements": [ + "Luft" + ], + "cost": 3, + "rarity": "gewöhnlich", + "kind": "Zauber", + "effects": [ + { + "kind": "damage", + "target": "enemy_any", + "amount": 2 + }, + { + "kind": "draw", + "target": "none", + "amount": 1 + } + ] + }, + { + "id": "l_laeufer", + "name": "Windläufer", + "elements": [ + "Luft" + ], + "cost": 4, + "rarity": "selten", + "kind": "Wesen", + "attack": 3, + "health": 4, + "keywords": [ + "Flink" + ] + }, + { + "id": "ff_glut", + "name": "Glutherz", + "elements": [ + "Feuer", + "Feuer" + ], + "cost": 3, + "rarity": "selten", + "kind": "Wesen", + "attack": 3, + "health": 3, + "effects": [ + { + "kind": "damage", + "target": "all_enemy_heroes", + "amount": 2 + } + ] + }, + { + "id": "ww_abyss", + "name": "Abyssalwächter", + "elements": [ + "Wasser", + "Wasser" + ], + "cost": 5, + "rarity": "selten", + "kind": "Wesen", + "attack": 3, + "health": 8, + "keywords": [ + "Wächter" + ], + "effects": [ + { + "kind": "draw", + "target": "none", + "amount": 1 + } + ] + }, + { + "id": "ee_faust", + "name": "Felsenfaust", + "elements": [ + "Erde", + "Erde" + ], + "cost": 4, + "rarity": "selten", + "kind": "Wesen", + "attack": 5, + "health": 6, + "keywords": [ + "Schild" + ] + }, + { + "id": "ll_zwilling", + "name": "Zwillingswind", + "elements": [ + "Luft", + "Luft" + ], + "cost": 4, + "rarity": "selten", + "kind": "Wesen", + "attack": 2, + "health": 3, + "keywords": [ + "Flink", + "Doppelschlag" + ] + }, + { + "id": "fw_nebel", + "name": "Nebelgeist", + "elements": [ + "Feuer", + "Wasser" + ], + "cost": 3, + "rarity": "selten", + "kind": "Wesen", + "attack": 2, + "health": 4, + "effects": [ + { + "kind": "damage", + "target": "all_enemy_creatures", + "amount": 1 + }, + { + "kind": "freeze", + "target": "enemy_creature" + } + ] + }, + { + "id": "fe_schlange", + "name": "Magmaschlange", + "elements": [ + "Feuer", + "Erde" + ], + "cost": 4, + "rarity": "selten", + "kind": "Wesen", + "attack": 4, + "health": 4, + "effects": [ + { + "kind": "damage", + "target": "enemy_creature", + "amount": 2 + } + ] + }, + { + "id": "fl_bote", + "name": "Sturmbote", + "elements": [ + "Feuer", + "Luft" + ], + "cost": 3, + "rarity": "selten", + "kind": "Wesen", + "attack": 3, + "health": 2, + "keywords": [ + "Flink" + ], + "effects": [ + { + "kind": "damage", + "target": "enemy_any", + "amount": 1 + } + ] + }, + { + "id": "we_moorkroete", + "name": "Moorkröte", + "elements": [ + "Wasser", + "Erde" + ], + "cost": 3, + "rarity": "selten", + "kind": "Wesen", + "attack": 2, + "health": 6, + "keywords": [ + "Wächter" + ], + "effects": [ + { + "kind": "heal", + "target": "self_hero", + "amount": 3 + } + ] + }, + { + "id": "wl_boen", + "name": "Böenreiter", + "elements": [ + "Wasser", + "Luft" + ], + "cost": 3, + "rarity": "selten", + "kind": "Wesen", + "attack": 3, + "health": 3, + "keywords": [ + "Flink" + ], + "effects": [ + { + "kind": "draw", + "target": "none", + "amount": 1 + } + ] + }, + { + "id": "el_duenen", + "name": "Dünenläufer", + "elements": [ + "Erde", + "Luft" + ], + "cost": 3, + "rarity": "selten", + "kind": "Wesen", + "attack": 3, + "health": 3, + "keywords": [ + "Flink" + ], + "effects": [ + { + "kind": "shield", + "target": "friendly_creature" + } + ] + }, + { + "id": "f_funkenwerfer", + "name": "Funkenwerfer", + "elements": [ + "Feuer" + ], + "cost": 2, + "rarity": "gewöhnlich", + "kind": "Wesen", + "attack": 2, + "health": 2, + "effects": [ + { + "kind": "damage", + "target": "enemy_creature", + "amount": 1 + } + ] + }, + { + "id": "f_zunge", + "name": "Flammenzunge", + "elements": [ + "Feuer" + ], + "cost": 5, + "rarity": "gewöhnlich", + "kind": "Wesen", + "attack": 5, + "health": 5 + }, + { + "id": "f_magma", + "name": "Magmaschlag", + "elements": [ + "Feuer" + ], + "cost": 4, + "rarity": "selten", + "kind": "Zauber", + "effects": [ + { + "kind": "damage", + "target": "enemy_creature", + "amount": 5 + } + ] + }, + { + "id": "f_falle", + "name": "Feuerfalle", + "elements": [ + "Feuer" + ], + "cost": 2, + "rarity": "selten", + "kind": "Falle", + "effects": [ + { + "kind": "damage", + "target": "trigger_source", + "amount": 3 + } + ], + "trigger": "attacked" + }, + { + "id": "w_schlange", + "name": "Flussschlange", + "elements": [ + "Wasser" + ], + "cost": 3, + "rarity": "gewöhnlich", + "kind": "Wesen", + "attack": 3, + "health": 3 + }, + { + "id": "w_taucher", + "name": "Perlentaucher", + "elements": [ + "Wasser" + ], + "cost": 4, + "rarity": "gewöhnlich", + "kind": "Wesen", + "attack": 3, + "health": 4, + "effects": [ + { + "kind": "draw", + "target": "none", + "amount": 1 + } + ] + }, + { + "id": "w_quelle", + "name": "Heilende Quelle", + "elements": [ + "Wasser" + ], + "cost": 2, + "rarity": "gewöhnlich", + "kind": "Zauber", + "effects": [ + { + "kind": "heal", + "target": "self_hero", + "amount": 6 + } + ] + }, + { + "id": "w_falle", + "name": "Frostfalle", + "elements": [ + "Wasser" + ], + "cost": 2, + "rarity": "selten", + "kind": "Falle", + "effects": [ + { + "kind": "cancel", + "target": "none" + }, + { + "kind": "freeze", + "target": "trigger_source" + } + ], + "trigger": "attacked" + }, + { + "id": "e_lehm", + "name": "Lehmkrieger", + "elements": [ + "Erde" + ], + "cost": 2, + "rarity": "gewöhnlich", + "kind": "Wesen", + "attack": 3, + "health": 2 + }, + { + "id": "e_steinschlag", + "name": "Steinschlag", + "elements": [ + "Erde" + ], + "cost": 3, + "rarity": "gewöhnlich", + "kind": "Zauber", + "effects": [ + { + "kind": "damage", + "target": "enemy_creature", + "amount": 3 + } + ] + }, + { + "id": "e_hueter", + "name": "Waldhüter", + "elements": [ + "Erde" + ], + "cost": 5, + "rarity": "selten", + "kind": "Wesen", + "attack": 5, + "health": 7, + "keywords": [ + "Wächter" + ] + }, + { + "id": "e_falle", + "name": "Erdwall", + "elements": [ + "Erde" + ], + "cost": 2, + "rarity": "selten", + "kind": "Falle", + "effects": [ + { + "kind": "summon", + "target": "none", + "card_id": "e_wall" + } + ], + "trigger": "attacked" + }, + { + "id": "l_bote", + "name": "Windbote", + "elements": [ + "Luft" + ], + "cost": 1, + "rarity": "gewöhnlich", + "kind": "Wesen", + "attack": 1, + "health": 2, + "keywords": [ + "Flink" + ] + }, + { + "id": "l_rueckenwind", + "name": "Rückenwind", + "elements": [ + "Luft" + ], + "cost": 2, + "rarity": "gewöhnlich", + "kind": "Zauber", + "effects": [ + { + "kind": "buff", + "target": "friendly_creature", + "amount": 2 + }, + { + "kind": "draw", + "target": "none", + "amount": 1 + } + ] + }, + { + "id": "l_jaeger", + "name": "Himmelsjäger", + "elements": [ + "Luft" + ], + "cost": 5, + "rarity": "selten", + "kind": "Wesen", + "attack": 5, + "health": 3, + "keywords": [ + "Flink" + ] + }, + { + "id": "l_falle", + "name": "Windfalle", + "elements": [ + "Luft" + ], + "cost": 2, + "rarity": "selten", + "kind": "Falle", + "effects": [ + { + "kind": "bounce", + "target": "trigger_source" + } + ], + "trigger": "creature_played" + }, + { + "id": "f_aschefalle", + "name": "Aschefalle", + "elements": [ + "Feuer" + ], + "cost": 3, + "rarity": "episch", + "kind": "Falle", + "trigger": "creature_played", + "effects": [ + { + "kind": "damage", + "target": "trigger_source", + "amount": 3 + } + ] + }, + { + "id": "w_nebelfalle", + "name": "Nebelfalle", + "elements": [ + "Wasser" + ], + "cost": 1, + "rarity": "selten", + "kind": "Falle", + "trigger": "attacked", + "effects": [ + { + "kind": "cancel", + "target": "none" + }, + { + "kind": "draw", + "target": "none", + "amount": 1 + } + ] + }, + { + "id": "e_dornen", + "name": "Dornenfalle", + "elements": [ + "Erde" + ], + "cost": 3, + "rarity": "episch", + "kind": "Falle", + "trigger": "attacked", + "effects": [ + { + "kind": "damage", + "target": "trigger_source", + "amount": 2 + }, + { + "kind": "heal", + "target": "self_hero", + "amount": 3 + } + ] + }, + { + "id": "e_sandfalle", + "name": "Sandfalle", + "elements": [ + "Erde" + ], + "cost": 2, + "rarity": "selten", + "kind": "Falle", + "trigger": "creature_played", + "effects": [ + { + "kind": "freeze", + "target": "trigger_source" + } + ] + }, + { + "id": "l_boenfalle", + "name": "Böenfalle", + "elements": [ + "Luft" + ], + "cost": 3, + "rarity": "episch", + "kind": "Falle", + "trigger": "attacked", + "effects": [ + { + "kind": "bounce", + "target": "trigger_source" + } + ] + }, + { + "id": "l_spiegel", + "name": "Spiegelfalle", + "elements": [ + "Luft" + ], + "cost": 4, + "rarity": "episch", + "kind": "Falle", + "trigger": "creature_played", + "effects": [ + { + "kind": "summon", + "target": "none", + "card_id": "l_wind" + } + ] + }, + { + "id": "fff_sonne", + "name": "Kern der Sonne", + "elements": [ + "Feuer", + "Feuer", + "Feuer" + ], + "cost": 9, + "rarity": "mythisch", + "kind": "Wesen", + "attack": 9, + "health": 7, + "keywords": [ + "Flink" + ], + "effects": [ + { + "kind": "damage", + "target": "all_enemies", + "amount": 5 + } + ] + }, + { + "id": "www_ozean", + "name": "Herz des Ozeans", + "elements": [ + "Wasser", + "Wasser", + "Wasser" + ], + "cost": 9, + "rarity": "mythisch", + "kind": "Wesen", + "attack": 7, + "health": 10, + "keywords": [ + "Wächter" + ], + "effects": [ + { + "kind": "freeze", + "target": "all_enemy_creatures" + }, + { + "kind": "draw", + "target": "none", + "amount": 3 + } + ] + }, + { + "id": "eee_gebirge", + "name": "Seele des Gebirges", + "elements": [ + "Erde", + "Erde", + "Erde" + ], + "cost": 10, + "rarity": "mythisch", + "kind": "Wesen", + "attack": 10, + "health": 15, + "keywords": [ + "Wächter", + "Schild" + ], + "effects": [ + { + "kind": "heal", + "target": "self_hero", + "amount": 10 + }, + { + "kind": "buff", + "target": "all_friendly_creatures", + "amount": 2, + "amount2": 2 + } + ] + }, + { + "id": "lll_himmel", + "name": "Atem des Himmels", + "elements": [ + "Luft", + "Luft", + "Luft" + ], + "cost": 9, + "rarity": "mythisch", + "kind": "Wesen", + "attack": 7, + "health": 7, + "keywords": [ + "Flink", + "Doppelschlag" + ], + "effects": [ + { + "kind": "bounce", + "target": "all_enemy_creatures" + } + ] + } + ] +} \ No newline at end of file diff --git a/export_presets.cfg b/export_presets.cfg new file mode 100644 index 0000000..20b7f8b --- /dev/null +++ b/export_presets.cfg @@ -0,0 +1,73 @@ +[preset.0] + +name="Linux" +platform="Linux" +runnable=true +advanced_options=false +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="*.json" +exclude_filter="python/*" +export_path="build/dinger-linux.x86_64" +patches=PackedStringArray() +encryption_include_filters="" +encryption_exclude_filters="" +seed=0 +encrypt_pck=false +encrypt_directory=false +script_export_mode=2 + +[preset.0.options] + +custom_template/debug="" +custom_template/release="" +debug/export_console_wrapper=1 +binary_format/embed_pck=true +texture_format/s3tc_bptc=true +texture_format/etc2_astc=false +binary_format/architecture="x86_64" + +[preset.1] + +name="Windows" +platform="Windows Desktop" +runnable=true +advanced_options=false +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="*.json" +exclude_filter="python/*" +export_path="build/dinger-windows.exe" +patches=PackedStringArray() +encryption_include_filters="" +encryption_exclude_filters="" +seed=0 +encrypt_pck=false +encrypt_directory=false +script_export_mode=2 + +[preset.1.options] + +custom_template/debug="" +custom_template/release="" +debug/export_console_wrapper=1 +binary_format/embed_pck=true +texture_format/s3tc_bptc=true +texture_format/etc2_astc=false +binary_format/architecture="x86_64" +application/modify_resources=true +application/icon="" +application/console_wrapper_icon="" +application/icon_interpolation=4 +application/file_version="" +application/product_version="" +application/company_name="Dinger" +application/product_name="Dinger" +application/file_description="Dinger Kartenspiel" +application/copyright="" +application/trademarks="" +application/export_angle=0 +application/export_d3d12=0 +application/d3d12_agility_sdk_multiarch=true diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..0177193 --- /dev/null +++ b/project.godot @@ -0,0 +1,28 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. + +config_version=5 + +[application] + +config/name="Dinger" +run/main_scene="res://scenes/main.tscn" +config/features=PackedStringArray("4.7", "GL Compatibility") + +[display] + +window/size/viewport_width=1280 +window/size/viewport_height=800 +window/stretch/mode="canvas_items" +window/stretch/aspect="keep" + +[internationalization] + +locale/translations=PackedStringArray("res://translations/ui.en.translation") +locale/fallback="de" + +[rendering] + +renderer/rendering_method="gl_compatibility" +renderer/rendering_method.mobile="gl_compatibility" diff --git a/scenes/main.tscn b/scenes/main.tscn new file mode 100644 index 0000000..4c9b75f --- /dev/null +++ b/scenes/main.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=2 format=3] + +[ext_resource type="Script" path="res://scripts/ui/main.gd" id="1"] + +[node name="Main" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1") diff --git a/scripts/ai.gd b/scripts/ai.gd new file mode 100644 index 0000000..37d8bb1 --- /dev/null +++ b/scripts/ai.gd @@ -0,0 +1,269 @@ +class_name AI +## KI mit einfacher Vorausschau: jede mögliche Aktion wird auf einer Kopie des +## Spiels ausgeführt und die Stellung danach bewertet. Die gierige Variante +## (choose_action_greedy) dient als Vergleich. + + +# --- Bewertung ------------------------------------------------------------------- + +static func creature_value(c: Game.Creature) -> float: + var v := float(c.power() + c.health) + if c.taunt(): + v += 2.0 + if c.shield: + v += 1.5 + if c.attacks_per_turn() == 2: + v += c.power() + if c.frozen: + v -= c.power() * 0.5 + return v + + +static func board_value(p: Game.Player) -> float: + var v := 0.0 + for c in p.board: + v += creature_value(c) + return v + + +## Stellung aus Sicht von p: eigenes Leben, Feld und Hand zählen positiv, +## die der Gegner negativ. Ein besiegter Gegner ist viel wert. +static func evaluate(g: Game, p: Game.Player) -> float: + if not p.alive(): + return -10000.0 + var score := p.life * 1.0 + board_value(p) * 1.0 + p.hand.size() * 0.8 + p.traps.size() * 2.5 + var alive_enemies := 0 + for e in g.players: + if e == p: + continue + if not e.alive(): + score += 40.0 + continue + alive_enemies += 1 + score -= e.life * 0.6 + board_value(e) * 0.9 + e.hand.size() * 0.2 + if e.life <= 6: + score += 3.0 # fast besiegt: dranbleiben + if alive_enemies == 0: + return 10000.0 + return score + + +# --- Vorausschau --------------------------------------------------------------- + +static func candidate_actions(game: Game, p: Game.Player) -> Array: + var out := [] + for card in p.hand: + if not game.can_play(p, card)[0]: + continue + var tt: String = card.target_type() + if tt == "": + out.append({"type": "play", "card": card, "target": null}) + else: + var valid := game.valid_targets(p, tt) + if valid.is_empty(): + out.append({"type": "play", "card": card, "target": null}) + for t in valid: + out.append({"type": "play", "card": card, "target": t}) + for cr in p.board: + if not cr.can_attack(): + continue + for e in game.enemies_of(p): + for t in e.board + [e]: + if game.can_attack(cr, t)[0]: + out.append({"type": "attack", "creature": cr, "target": t}) + return out + + +## Führt eine Aktion des Originals auf der Kopie aus. +static func apply_on_clone(g2: Game, game: Game, action: Dictionary) -> void: + var p2: Game.Player = g2.players[game.current_idx] + var target = null + if action.get("target") != null: + target = map_target(g2, game, action.target) + if action.type == "play": + g2.play_card(p2, action.card, target) + else: + g2.attack(g2.find_creature(action.creature.uid), target) + + +static func map_target(g2: Game, game: Game, t): + if t is Game.Creature: + return g2.find_creature(t.uid) + return g2.players[game.players.find(t)] + + +const FOLLOW_UPS := 10 # Folgeschritte je Kandidat in der zweiten Suchstufe + + +## Mulligan der KI: teure Karten im ersten Zug zurücklegen. +static func mulligan_cards(p: Game.Player) -> Array: + return p.hand.filter(func(c): return c.cost >= 5) + + +## Beste Aktion nach einer Vorausschau von zwei Schritten: jede Aktion wird auf einer +## Kopie ausgeführt und mit ihrem besten Folgeschritt bewertet (z. B. verstärken, dann angreifen). +static func choose_action(game: Game, p: Game.Player) -> Dictionary: + if game.winner != "" or game.enemies_of(p).is_empty(): + return {"type": "end"} + if not p.mulligan_done and p.turns == 1 and p == game.current(): + return {"type": "mulligan", "cards": mulligan_cards(p)} + var best := {"type": "end"} + var best_score := evaluate(game, p) + 0.01 + for action in candidate_actions(game, p): + var g2 := game.clone_for(p) + apply_on_clone(g2, game, action) + var p2: Game.Player = g2.players[game.current_idx] + var score := evaluate(g2, p2) + if g2.winner == "": + var count := 0 + for f in candidate_actions(g2, p2): + if count >= FOLLOW_UPS: + break + count += 1 + var g3 := g2.clone_for(p2) + apply_on_clone(g3, g2, f) + score = maxf(score, evaluate(g3, g3.players[g2.current_idx]) - 0.001) + if score > best_score: + best_score = score + best = action + return best + + +# --- Gierige Vergleichs-KI ------------------------------------------------------- + +static func _kills(attacker, defender) -> bool: + return not defender.shield and defender.health <= attacker.power() + + +static func _value(c) -> int: + return c.power() + c.health + (2 if c.taunt() else 0) + + +static func _best(arr: Array, key: Callable): + var best = null + var best_v := 0 + for x in arr: + var v: int = key.call(x) + if best == null or v > best_v: + best = x + best_v = v + return best + + +static func _threat_score(h) -> int: + var board_attack := 0 + for c in h.board: + board_attack += c.power() + return h.life - board_attack + + +static func _weakest(heroes: Array): + var best = null + for h in heroes: + if best == null or _threat_score(h) < _threat_score(best): + best = h + return best + + +static func choose_action_greedy(game: Game, p: Game.Player) -> Dictionary: + if game.winner != "" or game.enemies_of(p).is_empty(): + return {"type": "end"} + if not p.mulligan_done and p.turns == 1 and p == game.current(): + return {"type": "mulligan", "cards": mulligan_cards(p)} + var playable := p.hand.filter(func(c): return game.can_play(p, c)[0]) + if not playable.is_empty(): + Game.shuffle(playable, game.rng) + var card = playable[0] + for c in playable: + if c.cost > card.cost: + card = c + return {"type": "play", "card": card, "target": pick_target(game, p, card)} + for cr in p.board: + if cr.can_attack(): + var t = pick_attack_target(game, p, cr) + if t != null: + return {"type": "attack", "creature": cr, "target": t} + return {"type": "end"} + + +static func pick_target(game: Game, p: Game.Player, card: Cards.Card): + var tt := card.target_type() + if tt == "": + return null + var valid := game.valid_targets(p, tt) + if valid.is_empty(): + return null + var fx: Cards.Effect = null + for f in card.effects: + if f.target == tt: + fx = f + break + var creatures := valid.filter(func(t): return t is Game.Creature) + var heroes := valid.filter(func(t): return t is Game.Player) + match fx.kind: + "damage": + var killable := creatures.filter(func(c): return not c.shield and c.health <= fx.amount) + if not killable.is_empty(): + return _best(killable, Callable(AI, "_value")) + if not heroes.is_empty(): + return _weakest(heroes) + return _best(creatures, Callable(AI, "_value")) + "freeze", "bounce": + return _best(creatures, func(c): return c.card.cost * 100 + c.power()) + "buff", "shield": + return _best(creatures, func(c): return (100 if c.can_attack() else 0) + c.power()) + return valid[0] + + +static func pick_attack_target(game: Game, p: Game.Player, cr: Game.Creature): + var enemies := game.enemies_of(p) + var total := 0 + for c in p.board: + if c.can_attack(): + total += c.power() * c.attacks_left + var options := [] + for e in enemies: + var taunts: Array = e.board.filter(func(c): return c.taunt()) + if not taunts.is_empty(): + options.append_array(taunts) + else: + if total >= e.life: + return e + options.append_array(e.board) + options.append(e) + var creatures := options.filter(func(t): return t is Game.Creature) + var heroes := options.filter(func(t): return t is Game.Player) + var good := creatures.filter(func(c): return _kills(cr, c) and not _kills(c, cr)) + if not good.is_empty(): + return _best(good, Callable(AI, "_value")) + var trade := creatures.filter(func(c): return _kills(cr, c) and _value(c) > _value(cr)) + if not trade.is_empty(): + return _best(trade, Callable(AI, "_value")) + if not heroes.is_empty(): + return _weakest(heroes) + if not creatures.is_empty(): + return _best(creatures, func(c): return 1000 - c.health) + return null + + +# --- Ausführung ------------------------------------------------------------------- + +static func apply_action(game: Game, p: Game.Player, action: Dictionary) -> void: + match action.type: + "play": + game.play_card(p, action.card, action.target) + "attack": + game.attack(action.creature, action.target) + "mulligan": + game.mulligan(p, action.cards) + _: + game.end_turn() + + +## Spielt den ganzen Zug (für Simulationen und Tests). greedy: gierige KI statt Vorausschau. +static func take_turn(game: Game, p: Game.Player, greedy: bool = false, limit: int = 100) -> void: + for i in limit: + var action := choose_action_greedy(game, p) if greedy else choose_action(game, p) + apply_action(game, p, action) + if action.type == "end" or game.winner != "": + return diff --git a/scripts/ai.gd.uid b/scripts/ai.gd.uid new file mode 100644 index 0000000..f9c3417 --- /dev/null +++ b/scripts/ai.gd.uid @@ -0,0 +1 @@ +uid://pewo135bho86 diff --git a/scripts/campaign.gd b/scripts/campaign.gd new file mode 100644 index 0000000..07fa111 --- /dev/null +++ b/scripts/campaign.gd @@ -0,0 +1,59 @@ +class_name Campaign +## Kampagne: zehn benannte Magier, jede Stufe mit mehr Gegnern am Tisch. + +const STAGES := [ + {"name": "Fenn", "title": "Kobold-Zähmer", "elements": ["Feuer"], "extra": 0, "bias": 1.0, "reward": 100, "perk": "feuer_angriff"}, + {"name": "Mara", "title": "Gezeitenhexe", "elements": ["Wasser"], "extra": 0, "bias": 1.0, "reward": 100, "perk": "leben_35"}, + {"name": "Borin", "title": "Steinfaust", "elements": ["Erde"], "extra": 1, "bias": 1.2, "reward": 150, "perk": "waechter_leben"}, + {"name": "Liska", "title": "Windläuferin", "elements": ["Luft"], "extra": 1, "bias": 1.2, "reward": 150, "perk": "flink_angriff"}, + {"name": "Vulkar", "title": "Herr der Lava", "elements": ["Feuer", "Erde"], "extra": 2, "bias": 1.5, "reward": 200, "perk": "zauber_schaden"}, + {"name": "Nyx", "title": "Sturmruferin", "elements": ["Wasser", "Luft"], "extra": 2, "bias": 1.5, "reward": 200, "perk": "extra_karten"}, + {"name": "Ignis", "title": "Inferno-Priester", "elements": ["Feuer"], "extra": 3, "bias": 2.0, "reward": 250, "perk": "resonanz_doppelt"}, + {"name": "Thalassa", "title": "Tiefseekönigin", "elements": ["Wasser"], "extra": 3, "bias": 2.0, "reward": 250, "perk": "schild_wesen"}, + {"name": "Zephyra", "title": "Blitzkaiserin", "elements": ["Feuer", "Luft"], "extra": 4, "bias": 2.5, "reward": 300, "perk": "alle_flink"}, + {"name": "Archimagier", "title": "Meister der Elemente", "elements": ["Erde", "Luft"], "extra": 4, "bias": 3.0, "reward": 500, "perk": "start_energie"}, +] + + +## Kapitel 2: die Magier kehren mit zwei Merkmalen und mehr Gefolge zurück. +const STAGES2 := [ + {"name": "Fenn", "title": "Flammenzähmer", "elements": ["Feuer"], "extra": 1, "bias": 2.0, "reward": 300, "perks": ["feuer_angriff", "start_energie"]}, + {"name": "Mara", "title": "Herrin der Gezeiten", "elements": ["Wasser"], "extra": 1, "bias": 2.0, "reward": 300, "perks": ["leben_35", "extra_karten"]}, + {"name": "Borin", "title": "Fels der Ewigkeit", "elements": ["Erde"], "extra": 2, "bias": 2.2, "reward": 350, "perks": ["waechter_leben", "schild_wesen"]}, + {"name": "Liska", "title": "Sturmläuferin", "elements": ["Luft"], "extra": 2, "bias": 2.2, "reward": 350, "perks": ["flink_angriff", "alle_flink"]}, + {"name": "Vulkar", "title": "Aschekönig", "elements": ["Feuer", "Erde"], "extra": 3, "bias": 2.5, "reward": 400, "perks": ["zauber_schaden", "feuer_angriff"]}, + {"name": "Nyx", "title": "Gewitterruferin", "elements": ["Wasser", "Luft"], "extra": 3, "bias": 2.5, "reward": 400, "perks": ["extra_karten", "flink_angriff"]}, + {"name": "Ignis", "title": "Inferno-Erzpriester", "elements": ["Feuer"], "extra": 4, "bias": 3.0, "reward": 450, "perks": ["resonanz_doppelt", "zauber_schaden"]}, + {"name": "Thalassa", "title": "Kaiserin der Tiefe", "elements": ["Wasser"], "extra": 4, "bias": 3.0, "reward": 450, "perks": ["schild_wesen", "leben_35"]}, + {"name": "Zephyra", "title": "Blitzkaiserin", "elements": ["Feuer", "Luft"], "extra": 5, "bias": 3.5, "reward": 500, "perks": ["alle_flink", "start_energie"]}, + {"name": "Archimagier", "title": "Herr aller Elemente", "elements": ["Erde", "Luft"], "extra": 5, "bias": 4.0, "reward": 800, "perks": ["start_energie", "resonanz_doppelt", "extra_karten"]}, +] + + +static func total() -> int: + return STAGES.size() + STAGES2.size() + + +static func chapter(stage: int) -> int: + return 1 if stage < STAGES.size() else 2 + + +## Stufe mit einheitlichem Feld "perks". +static func stage(i: int) -> Dictionary: + if i < STAGES.size(): + var st: Dictionary = STAGES[i].duplicate() + st["perks"] = [st.perk] + return st + return STAGES2[i - STAGES.size()] + + +static func opponents(stage_index: int, r: RandomNumberGenerator) -> Array: + var st := stage(stage_index) + var life: int = 35 if "leben_35" in st.perks else Game.START_LIFE + var boss := Game.Player.new(st.name, Game.build_opponent_deck(r, st.elements, st.bias), false, life, st.title) + boss.perks = Array(st.perks) + var out := [boss] + var extra: int = mini(st.extra, Game.MAX_OPPONENTS - 1) + for k in extra: + out.append(Game.random_opponent(r, k + 1)) + return out diff --git a/scripts/campaign.gd.uid b/scripts/campaign.gd.uid new file mode 100644 index 0000000..582480d --- /dev/null +++ b/scripts/campaign.gd.uid @@ -0,0 +1 @@ +uid://bmpb6g16h42ps diff --git a/scripts/cards.gd b/scripts/cards.gd new file mode 100644 index 0000000..8562122 --- /dev/null +++ b/scripts/cards.gd @@ -0,0 +1,292 @@ +class_name Cards +## Elemente, Kombos und der Kartenpool. + +const ELEMENTS: Array[String] = ["Feuer", "Wasser", "Erde", "Luft"] +const ELEMENT_COLORS := { + "Feuer": Color("be3c23"), + "Wasser": Color("2d64be"), + "Erde": Color("73552d"), + "Luft": Color("78aac8"), +} +# Jede Paarung ist eine Kombo, auch gleiche Elemente. +const COMBOS := { + "Feuer+Feuer": "Inferno", + "Wasser+Wasser": "Tiefsee", + "Erde+Erde": "Berg", + "Luft+Luft": "Orkan", + "Feuer+Wasser": "Dampf", + "Feuer+Erde": "Lava", + "Feuer+Luft": "Blitz", + "Wasser+Erde": "Schlamm", + "Wasser+Luft": "Sturm", + "Erde+Luft": "Sand", + # Dreifach-Kombos: die mythische Stufe + "Feuer+Feuer+Feuer": "Sonne", + "Wasser+Wasser+Wasser": "Ozean", + "Erde+Erde+Erde": "Gebirge", + "Luft+Luft+Luft": "Himmel", +} +# Feldkombos: entstehen, wenn ein Wesen neben einem Wesen mit anderem Element ausgespielt wird. +const FIELD_COMBO_TEXT := { + "Dampf": "Friere das stärkste gegnerische Wesen ein", + "Lava": "1 Schaden an alle gegnerischen Wesen", + "Blitz": "2 Schaden an den schwächsten Gegner", + "Schlamm": "Heile dich um 3", + "Sturm": "Ziehe 1 Karte", + "Sand": "Das neue Wesen erhält Schild", +} +const RESONANCE_TEXT := "Resonanz: Ein Wesen hat +1 Angriff je anderem eigenen Wesen, das ein Element mit ihm teilt (höchstens +4)." +const RARITIES: Array[String] = ["gewöhnlich", "selten", "episch", "legendär", "mythisch"] +const RARITY_COLORS := { + "gewöhnlich": Color("aaaaaa"), + "selten": Color("4682e6"), + "episch": Color("aa46dc"), + "legendär": Color("f0aa28"), + "mythisch": Color("ff5a8c"), +} +const KEYWORDS: Array[String] = ["Wächter", "Flink", "Schild", "Doppelschlag"] +const KEYWORD_HELP := { + "Wächter": "Muss zuerst angegriffen werden.", + "Flink": "Kann sofort angreifen.", + "Schild": "Blockt den nächsten Schaden.", + "Doppelschlag": "Greift zweimal pro Zug an.", +} +const CHOSEN_TARGETS: Array[String] = ["enemy_creature", "enemy_any", "friendly_creature"] +const DATA_PATH := "res://data/karten.json" + + +static func combo_key(elements: Array) -> String: + var sorted := elements.duplicate() + sorted.sort_custom(func(a, b): return ELEMENTS.find(a) < ELEMENTS.find(b)) + return "+".join(sorted) + + +static func combo_name(elements: Array) -> String: + if elements.size() == 1: + return elements[0] + return COMBOS[combo_key(elements)] + + +static func field_combo_effect(name: String) -> Effect: + match name: + "Dampf": + return Effect.new("freeze", "strongest_enemy_creature") + "Lava": + return Effect.new("damage", "all_enemy_creatures", 1) + "Blitz": + return Effect.new("damage", "weakest_enemy_hero", 2) + "Schlamm": + return Effect.new("heal", "self_hero", 3) + "Sturm": + return Effect.new("draw", "none", 1) + "Sand": + return Effect.new("shield", "self_creature") + return null + + +const TRIGGER_TEXT := { + "attacked": "Wenn ein gegnerisches Wesen dich oder eines deiner Wesen angreift", + "creature_played": "Wenn ein Gegner ein Wesen ausspielt", +} + + +class Effect extends RefCounted: + var kind: String # damage, heal, draw, freeze, bounce, buff, shield, summon, cancel + var target: String # siehe CHOSEN_TARGETS und Game.resolve() + var amount: int + var amount2: int + var card_id: String # für summon + + func _init(k: String, t: String, a: int = 0, a2: int = 0, cid: String = "") -> void: + kind = k + target = t + amount = a + amount2 = a2 + card_id = cid + + func to_dict() -> Dictionary: + var d := {"kind": kind, "target": target} + if amount != 0: + d["amount"] = amount + if amount2 != 0: + d["amount2"] = amount2 + if card_id != "": + d["card_id"] = card_id + return d + + static func from_dict(d: Dictionary) -> Effect: + return Effect.new(d.kind, d.get("target", "none"), int(d.get("amount", 0)), int(d.get("amount2", 0)), str(d.get("card_id", ""))) + + func text() -> String: + var n := str(amount) + if target == "trigger_source": + match kind: + "damage": + return n + " Schaden an den Angreifer" + "freeze": + return "Der Angreifer wird eingefroren" + "bounce": + return "Es geht zurück auf die Hand" + match kind: + "cancel": + return "Der Angriff verpufft" + "summon": + return "Beschwöre einen " + Cards.by_id(card_id).name + "damage": + match target: + "enemy_creature": + return n + " Schaden an ein gegnerisches Wesen" + "enemy_any": + return n + " Schaden an ein Ziel" + "all_enemy_creatures": + return n + " Schaden an alle gegnerischen Wesen" + "all_enemy_heroes": + return n + " Schaden an alle Gegner" + "all_enemies": + return n + " Schaden an alle Gegner und ihre Wesen" + "heal": + return "Heile dich um " + n + "draw": + return "Ziehe 1 Karte" if amount == 1 else "Ziehe " + n + " Karten" + "freeze": + if target == "enemy_creature": + return "Friere ein gegnerisches Wesen ein" + return "Friere alle gegnerischen Wesen ein" + "bounce": + if target == "enemy_creature": + return "Ein gegnerisches Wesen zurück auf die Hand" + return "Alle gegnerischen Wesen zurück auf die Hand" + "buff": + var b := "+%d/+%d" % [amount, amount2] + if target == "friendly_creature": + return "Ein befreundetes Wesen erhält " + b + return "Alle befreundeten Wesen erhalten " + b + "shield": + if target == "friendly_creature": + return "Ein befreundetes Wesen erhält Schild" + if target == "self_creature": + return "Erhält Schild" + return "Alle befreundeten Wesen erhalten Schild" + return "" + + +class Card extends RefCounted: + var id: String + var name: String + var elements: Array + var cost: int + var rarity: String + var kind: String # "Wesen", "Zauber" oder "Falle" + var attack: int = 0 + var health: int = 0 + var keywords: Array = [] + var effects: Array = [] + var trigger: String = "" # nur Fallen: attacked, creature_played + + func is_creature() -> bool: + return kind == "Wesen" + + func is_trap() -> bool: + return kind == "Falle" + + func to_dict() -> Dictionary: + var d := {"id": id, "name": name, "elements": elements, "cost": cost, "rarity": rarity, "kind": kind} + if is_creature(): + d["attack"] = attack + d["health"] = health + if not keywords.is_empty(): + d["keywords"] = keywords + if not effects.is_empty(): + d["effects"] = effects.map(func(e): return e.to_dict()) + if trigger != "": + d["trigger"] = trigger + return d + + static func from_dict(d: Dictionary) -> Card: + var c := Card.new() + c.id = d.id + c.name = d.name + c.elements = Array(d.elements) + c.cost = int(d.cost) + c.rarity = d.rarity + c.kind = d.kind + c.attack = int(d.get("attack", 0)) + c.health = int(d.get("health", 0)) + c.keywords = Array(d.get("keywords", [])) + for e in d.get("effects", []): + c.effects.append(Effect.from_dict(e)) + c.trigger = str(d.get("trigger", "")) + return c + + func is_combo() -> bool: + return elements.size() >= 2 + + func combo() -> String: + return Cards.combo_name(elements) + + func target_type() -> String: + for fx in effects: + if fx.target in Cards.CHOSEN_TARGETS: + return fx.target + return "" + + func text() -> String: + var parts: Array[String] = [] + if not keywords.is_empty(): + var kws: Array[String] = [] + for k in Cards.KEYWORDS: + if k in keywords: + kws.append(k) + parts.append(", ".join(kws) + ".") + if not effects.is_empty(): + var fx: Array[String] = [] + for f in effects: + fx.append(f.text()) + var s := ", ".join(fx) + "." + if is_trap(): + if trigger == "creature_played": + s = s.replace("an den Angreifer", "an dieses Wesen").replace("Der Angreifer wird", "Es wird") + parts.append("Falle. %s: %s" % [Cards.TRIGGER_TEXT[trigger], s]) + else: + parts.append(("Beim Ausspielen: " + s) if is_creature() else s) + return " ".join(parts) + + +static var _all: Array = [] +static var _by_id: Dictionary = {} + + +static func all() -> Array: + if _all.is_empty(): + _build() + return _all + + +static func by_id(id: String) -> Card: + if _all.is_empty(): + _build() + return _by_id[id] + + +static func has_id(id) -> bool: + if _all.is_empty(): + _build() + return _by_id.has(id) + + +static func of_rarity(r: String) -> Array: + return all().filter(func(c): return c.rarity == r) + + +## Lädt den Kartenpool aus data/karten.json. +static func _build() -> void: + var json := JSON.new() + var ok := json.parse(FileAccess.get_file_as_string(DATA_PATH)) + assert(ok == OK and json.data is Dictionary and json.data.has("karten"), "data/karten.json fehlt oder ist ungültig") + _all = [] + _by_id = {} + for d in json.data.karten: + var c := Card.from_dict(d) + assert(not _by_id.has(c.id), "Karten-ID doppelt: " + c.id) + _by_id[c.id] = c + _all.append(c) diff --git a/scripts/cards.gd.uid b/scripts/cards.gd.uid new file mode 100644 index 0000000..b73c492 --- /dev/null +++ b/scripts/cards.gd.uid @@ -0,0 +1 @@ +uid://dmhun2kwnifg5 diff --git a/scripts/challenge.gd b/scripts/challenge.gd new file mode 100644 index 0000000..16ae475 --- /dev/null +++ b/scripts/challenge.gd @@ -0,0 +1,33 @@ +class_name Challenge +## Wöchentliche Herausforderung: feste Regelvariante, einmal pro Woche belohnt. + +const LIST := [ + {"id": "eile", "name": "Eile", "text": "Alle beginnen mit 3 Energie und 20 Leben, drei Gegner.", "n_opp": 3, + "rules": {"everyone_perk": "start_energie", "start_life": 20}, "reward": 200}, + {"id": "resonanz", "name": "Resonanzsturm", "text": "Resonanz zählt für alle doppelt, zwei Gegner.", "n_opp": 2, + "rules": {"everyone_perk": "resonanz_doppelt"}, "reward": 180}, + {"id": "flink", "name": "Blitzkrieg", "text": "Alle Wesen sind flink, vier Gegner.", "n_opp": 4, + "rules": {"everyone_perk": "alle_flink"}, "reward": 250}, + {"id": "schild", "name": "Panzerschlacht", "text": "Alle Wesen kommen mit Schild, Duell mit 40 Leben.", "n_opp": 1, + "rules": {"everyone_perk": "schild_wesen", "start_life": 40}, "reward": 150}, + {"id": "karten", "name": "Kartenflut", "text": "Jeder zieht 2 Karten pro Zug, fünf Gegner am Tisch.", "n_opp": 5, + "rules": {"everyone_perk": "extra_karten"}, "reward": 300}, + {"id": "mono", "name": "Reine Lehre", "text": "Nur Decks mit einem Element sind erlaubt, drei Gegner.", "n_opp": 3, + "rules": {"mono_only": true}, "reward": 220}, +] + + +static func week() -> int: + var t := Profile.today() + return int(Time.get_unix_time_from_datetime_string(t + "T00:00:00") / 604800) + + +static func current() -> Dictionary: + return LIST[week() % LIST.size()] + + +## Prüft, ob das Deck zur Herausforderung passt. Gibt "" oder eine Fehlermeldung zurück. +static func deck_allowed(ch: Dictionary, deck: Array) -> String: + if ch.rules.get("mono_only", false) and Game.deck_elements(deck).size() != 1: + return "Diese Woche sind nur Decks mit einem Element erlaubt" + return "" diff --git a/scripts/challenge.gd.uid b/scripts/challenge.gd.uid new file mode 100644 index 0000000..8fd8739 --- /dev/null +++ b/scripts/challenge.gd.uid @@ -0,0 +1 @@ +uid://n5h6q6kfoo34 diff --git a/scripts/game.gd b/scripts/game.gd new file mode 100644 index 0000000..6e73d9b --- /dev/null +++ b/scripts/game.gd @@ -0,0 +1,854 @@ +class_name Game +extends RefCounted +## Spielregeln: Spieler, Wesen, Züge, Angriffe, Effekte, Feldkombos, Resonanz. + +const MAX_BOARD := 5 +const MAX_HAND := 8 +const MAX_ENERGY := 10 +const START_HAND := 4 +# Jeder gegen jeden: alle Spieler haben dieselben Regeln und dasselbe Startleben. +const START_LIFE := 30 +const MAX_OPPONENTS := 5 + +const RESONANCE_MAX := 4 +const MAX_TRAPS := 2 + +# Merkmale der Kampagnen-Bosse (Player.perks). +const PERKS := { + "feuer_angriff": "Feuerwesen haben +1 Angriff", + "flink_angriff": "Flinke Wesen haben +1 Angriff", + "waechter_leben": "Wächter kommen mit +2 Leben", + "extra_karten": "Zieht 2 Karten pro Zug", + "leben_35": "Beginnt mit 35 Leben", + "zauber_schaden": "Schadenszauber machen +1 Schaden", + "schild_wesen": "Wesen kommen mit Schild", + "alle_flink": "Alle Wesen sind flink", + "start_energie": "Beginnt mit 3 Energie", + "resonanz_doppelt": "Resonanz zählt doppelt", +} + +## Für wiederholbare Tests: 0 = echter Zufall, sonst Startwert (zählt je Aufruf hoch). +static var test_seed := 0 + + +static func make_rng() -> RandomNumberGenerator: + var r := RandomNumberGenerator.new() + if test_seed != 0: + r.seed = test_seed + test_seed += 1 + else: + r.randomize() + return r + +const DECK_SIZE := 20 +const MAX_COPIES := 3 +const MAX_DECK_ELEMENTS := 2 +const OPPONENT_RARITY_WEIGHT := {"gewöhnlich": 6.0, "selten": 3.0, "episch": 2.0, "legendär": 1.0, "mythisch": 0.3} + + +class Creature extends RefCounted: + var card: Cards.Card + var owner_ref: WeakRef # schwache Referenz: kein Zyklus Spieler <-> Wesen + var name: String + var uid: int + var attack: int + var resonance := 0 # +1, wenn ein anderes eigenes Wesen ein Element teilt + var health: int + var max_health: int + var shield: bool + var frozen := false + var ready: bool + var attacks_left: int + + func _init(c: Cards.Card, o, id: int) -> void: + card = c + owner_ref = weakref(o) + name = c.name + uid = id + attack = c.attack + health = c.health + max_health = c.health + shield = "Schild" in c.keywords + ready = "Flink" in c.keywords + attacks_left = attacks_per_turn() if ready else 0 + + func owner(): + return owner_ref.get_ref() + + ## Angriffswert inklusive Resonanz und Boss-Merkmalen. + func power() -> int: + var v := attack + resonance + var o = owner() + if o != null: + if "feuer_angriff" in o.perks and "Feuer" in card.elements: + v += 1 + if "flink_angriff" in o.perks and "Flink" in card.keywords: + v += 1 + return v + + func attacks_per_turn() -> int: + return 2 if "Doppelschlag" in card.keywords else 1 + + func taunt() -> bool: + return "Wächter" in card.keywords + + func can_attack() -> bool: + return ready and attacks_left > 0 and not frozen and power() > 0 + + func clone(new_owner) -> Creature: + var c := Creature.new(card, new_owner, uid) + c.attack = attack + c.resonance = resonance + c.health = health + c.max_health = max_health + c.shield = shield + c.frozen = frozen + c.ready = ready + c.attacks_left = attacks_left + return c + + +class Player extends RefCounted: + var name: String + var title: String + var is_human: bool + var life: int + var max_life: int + var deck: Array = [] + var hand: Array = [] + var board: Array = [] + var energy := 0 + var max_energy := 0 + var fatigue := 0 + var start_bonus := 0 # einmalige Extra-Energie im ersten Zug (Ausgleich fürs Nachziehen) + var traps: Array = [] # verdeckt liegende Fallenkarten + var order := 0 # Platz in der Zugreihenfolge + var perks: Array = [] # Boss-Merkmale (siehe PERKS) + var turns := 0 # begonnene eigene Züge + var mulligan_done := false + + func _init(n: String, d: Array, h: bool, l: int, t: String = "") -> void: + name = n + title = t + is_human = h + life = l + max_life = l + deck = d.duplicate() + + func alive() -> bool: + return life > 0 + + func clone() -> Player: + var p := Player.new(name, deck, is_human, life, title) + p.max_life = max_life + p.hand = hand.duplicate() + p.energy = energy + p.max_energy = max_energy + p.fatigue = fatigue + p.start_bonus = start_bonus + p.traps = traps.duplicate() + p.order = order + p.perks = perks.duplicate() + p.turns = turns + p.mulligan_done = mulligan_done + for c in board: + p.board.append(c.clone(p)) + return p + + +var human: Player # der (erste) menschliche Spieler +var humans: Array = [] # alle menschlichen Spieler (Hotseat: mehrere) +var opponents: Array = [] # alle außer dem ersten Menschen +var players: Array = [] # in Zugreihenfolge +var winner_player: Player = null +var rng: RandomNumberGenerator +var turn := 0 +var current_idx := 0 +var log: Array[String] = [] +var events: Array = [] # strukturierte Ereignisse für Animationen +var winner := "" # "", "human" oder "opponents" +var quiet := false # in KI-Kopien: kein Verlauf, keine Ereignisse +var next_uid := 1 + + +func _init(h: Player, opps: Array, r: RandomNumberGenerator = null) -> void: + human = h + opponents = opps + players = [h] + opps + humans = players.filter(func(p): return p.is_human) + if r == null: + r = make_rng() + rng = r + + +func current() -> Player: + return players[current_idx] + + +func say(t: String) -> void: + if not quiet: + log.append(t) + + +func emit(ev: Dictionary) -> void: + if not quiet: + events.append(ev) + + +func ref_of(target) -> Dictionary: + if target is Creature: + return {"kind": "creature", "uid": target.uid} + return {"kind": "player", "index": players.find(target)} + + +## Jeder gegen jeden: alle anderen lebenden Spieler sind Gegner. +func enemies_of(p: Player) -> Array: + return players.filter(func(o): return o != p and o.alive()) + + +func find_creature(uid: int) -> Creature: + for p in players: + for c in p.board: + if c.uid == uid: + return c + return null + + +## Unabhängige Kopie des Spielzustands (für die KI-Vorausschau). +func clone() -> Game: + var copies := [] + for p in players: + copies.append(p.clone()) + var idx := players.find(human) + var g := Game.new(copies[idx], copies.slice(0, idx) + copies.slice(idx + 1), RandomNumberGenerator.new()) + g.players = copies # gleiche Zugreihenfolge wie das Original + g.turn = turn + g.current_idx = current_idx + g.winner = winner + g.next_uid = next_uid + g.quiet = true + return g + + +## Kopie aus Sicht von p: fremde Fallen sind unbekannt und fehlen (die KI schummelt nicht). +func clone_for(p: Player) -> Game: + var g := clone() + var p2: Player = g.players[players.find(p)] + for q in g.players: + if q != p2: + q.traps = [] + return g + + +# --- Zugablauf --------------------------------------------------------------- + +func start(fixed_order: bool = false) -> void: + if not fixed_order: + shuffle(players, rng) # zufällige Zugreihenfolge + for i in players.size(): + var p: Player = players[i] + p.order = i + if "start_energie" in p.perks: + p.max_energy = 2 + shuffle(p.deck, rng) + # Wer nicht beginnt, startet mit einer Karte mehr und hat im ersten Zug + # einmalig 1 Energie extra (Ausgleich für den Startvorteil). + draw(p, START_HAND + (0 if i == 0 else 1)) + p.start_bonus = 0 if i == 0 else 1 + turn = 1 + current_idx = 0 + say("Zugreihenfolge: " + ", ".join(players.map(func(p): return p.name))) + for p in players: + for perk in p.perks: + say("%s: %s." % [p.name, PERKS[perk]]) + begin_turn(current()) + + +func draw(p: Player, n: int = 1) -> void: + for i in n: + if p.deck.is_empty(): + p.fatigue += 1 + say("%s hat keine Karten mehr und erleidet %d Schaden." % [p.name, p.fatigue]) + damage(p, p.fatigue) + continue + var card = p.deck.pop_back() + if p.hand.size() >= MAX_HAND: + say("%s: Hand voll, %s verbrennt." % [p.name, card.name]) + else: + p.hand.append(card) + check_end() + + +func begin_turn(p: Player) -> void: + p.max_energy = mini(MAX_ENERGY, p.max_energy + 1) + p.energy = p.max_energy + if p.start_bonus > 0: + p.energy += p.start_bonus + say("%s erhält %d Energie extra für den späteren Start." % [p.name, p.start_bonus]) + p.start_bonus = 0 + for c in p.board: + c.ready = true + if c.frozen: + c.frozen = false + c.attacks_left = 0 + say("%s taut auf und setzt aus." % c.name) + else: + c.attacks_left = c.attacks_per_turn() + p.turns += 1 + say("--- Zug %d: %s ---" % [turn, p.name]) + emit({"type": "turn", "player": players.find(p)}) + draw(p, 2 if "extra_karten" in p.perks else 1) + + +## Tauscht einmalig im ersten eigenen Zug Karten der Hand: zurück ins Deck, mischen, nachziehen. +func mulligan(p: Player, cards: Array) -> String: + if p.mulligan_done: + return "Schon getauscht" + if p != current() or p.turns != 1: + return "Nur im ersten eigenen Zug" + p.mulligan_done = true + var n := 0 + for c in cards: + if c in p.hand: + p.hand.erase(c) + p.deck.append(c) + n += 1 + if n > 0: + shuffle(p.deck, rng) + draw(p, n) + say("%s tauscht %d Karten." % [p.name, n] if n > 0 else "%s behält die Hand." % p.name) + emit({"type": "mulligan", "player": players.find(p), "count": n}) + return "" + + +func end_turn() -> void: + if winner != "": + return + var n := players.size() + for i in range(1, n + 1): + var idx := (current_idx + i) % n + if players[idx].alive(): + if idx <= current_idx: + turn += 1 + current_idx = idx + break + begin_turn(current()) + + +# --- Karten spielen ---------------------------------------------------------- + +func can_play(p: Player, card: Cards.Card) -> Array: + if winner != "" or p != current(): + return [false, "Nicht dein Zug"] + if p.energy < card.cost: + return [false, "Nicht genug Energie"] + if card.is_creature() and p.board.size() >= MAX_BOARD: + return [false, "Dein Feld ist voll"] + if card.is_trap() and p.traps.size() >= MAX_TRAPS: + return [false, "Höchstens %d Fallen" % MAX_TRAPS] + var tt := card.target_type() + if tt != "" and not card.is_creature() and valid_targets(p, tt).is_empty(): + return [false, "Kein gültiges Ziel"] + return [true, ""] + + +func valid_targets(p: Player, target_type: String) -> Array: + var enemies := enemies_of(p) + var creatures := [] + for e in enemies: + creatures.append_array(e.board) + match target_type: + "enemy_creature": + return creatures + "enemy_any": + return creatures + enemies + "friendly_creature": + return p.board.duplicate() + return [] + + +## Spielt eine Karte. Gibt "" zurück oder eine Fehlermeldung. +func play_card(p: Player, card: Cards.Card, target = null) -> String: + var ok := can_play(p, card) + if not ok[0]: + return ok[1] + var tt := card.target_type() + if tt != "": + var valid := valid_targets(p, tt) + if not valid.is_empty() and not (target in valid): + return "Ungültiges Ziel" + if valid.is_empty(): + target = null + p.hand.erase(card) + p.energy -= card.cost + if card.is_trap(): + p.traps.append(card) + say("%s legt eine Falle." % p.name) + emit({"type": "trap_set", "player": players.find(p)}) + check_end() + return "" + say("%s spielt %s." % [p.name, card.name]) + var cr: Creature = null + var bonus := 0 + if card.is_creature(): + cr = _enter(p, card) + else: + emit({"type": "spell", "player": players.find(p), "card": card}) + if "zauber_schaden" in p.perks: + bonus = 1 + for fx in card.effects: + resolve(p, fx, target, cr, bonus) + if cr != null and cr in p.board: + for e in enemies_of(p): + if not (cr in p.board): + break + trigger_trap(e, "creature_played", cr) + if cr != null and cr in p.board: + trigger_field_combos(p, cr) + update_resonance() + cleanup() + check_end() + return "" + + +## Feldkombo: das neue Wesen bildet mit dem ersten eigenen Wesen aus anderem +## Element eine Kombo; pro Ausspielen löst höchstens eine Kombo aus. +func trigger_field_combos(p: Player, cr: Creature) -> void: + for other in p.board: + if other == cr: + continue + for e1 in cr.card.elements: + for e2 in other.card.elements: + if e1 == e2: + continue + var name := Cards.combo_name([e1, e2]) + say("Feldkombo %s: %s." % [name, Cards.FIELD_COMBO_TEXT[name]]) + emit({"type": "combo", "name": name, "player": players.find(p), "uid": cr.uid}) + resolve(p, Cards.field_combo_effect(name), null, cr) + return + + +## Löst die erste passende Falle von owner aus. Gibt true zurück, wenn der +## auslösende Angriff abgebrochen wird. +func trigger_trap(owner: Player, trigger: String, source: Creature) -> bool: + for trap in owner.traps: + if trap.trigger != trigger: + continue + owner.traps.erase(trap) + say("Falle von %s: %s!" % [owner.name, trap.name]) + emit({"type": "trap", "player": players.find(owner), "card": trap, "source": ref_of(source)}) + var cancel := false + for fx in trap.effects: + if fx.kind == "cancel": + cancel = true + else: + resolve(owner, fx, null, source) + cleanup() + return cancel + return false + + +## Wesen betritt das Feld; Boss-Merkmale wirken beim Eintritt. +func _enter(p: Player, card: Cards.Card) -> Creature: + var cr := Creature.new(card, p, next_uid) + next_uid += 1 + if "waechter_leben" in p.perks and cr.taunt(): + cr.health += 2 + cr.max_health += 2 + if "schild_wesen" in p.perks: + cr.shield = true + if "alle_flink" in p.perks: + cr.ready = true + cr.attacks_left = cr.attacks_per_turn() + p.board.append(cr) + emit({"type": "play", "player": players.find(p), "uid": cr.uid, "card": card}) + return cr + + +## Setzt ein Wesen aufs Feld (Fallen, Effekte). +func summon(p: Player, card: Cards.Card) -> void: + if p.board.size() >= MAX_BOARD: + say("%s: kein Platz für %s." % [p.name, card.name]) + return + _enter(p, card) + say("%s beschwört %s." % [p.name, card.name]) + update_resonance() + + +## Resonanz: +1 Angriff je anderem eigenen Wesen, das ein Element teilt (höchstens +4). +func update_resonance() -> void: + for p in players: + for c in p.board: + var bonus := 0 + for o in p.board: + if o != c and o.card.elements.any(func(e): return e in c.card.elements): + bonus += 1 + c.resonance = mini(bonus, RESONANCE_MAX) * (2 if "resonanz_doppelt" in p.perks else 1) + + +func resolve(p: Player, fx: Cards.Effect, target, source: Creature = null, bonus: int = 0) -> void: + var enemies := enemies_of(p) + var enemy_creatures := [] + for e in enemies: + enemy_creatures.append_array(e.board) + var targets := [] + if fx.target in Cards.CHOSEN_TARGETS: + targets = [target] if target != null else [] + elif fx.target == "all_enemy_creatures": + targets = enemy_creatures + elif fx.target == "all_enemy_heroes": + targets = enemies.duplicate() + elif fx.target == "all_enemies": + targets = enemy_creatures + enemies + elif fx.target == "all_friendly_creatures": + targets = p.board.duplicate() + elif fx.target == "self_hero": + targets = [p] + elif fx.target == "self_creature" or fx.target == "trigger_source": + targets = [source] if source != null else [] + elif fx.target == "strongest_enemy_creature": + var best: Creature = null + for c in enemy_creatures: + if best == null or c.power() > best.power(): + best = c + targets = [best] if best != null else [] + elif fx.target == "weakest_enemy_hero": + var weakest: Player = null + for e in enemies: + if weakest == null or e.life < weakest.life: + weakest = e + targets = [weakest] if weakest != null else [] + else: + targets = [null] + for t in targets: + match fx.kind: + "damage": + damage(t, fx.amount + bonus) + "heal": + t.life = mini(t.max_life, t.life + fx.amount) + say("%s heilt sich um %d." % [t.name, fx.amount]) + emit({"type": "heal", "target": ref_of(t), "amount": fx.amount}) + "draw": + draw(p, fx.amount) + "freeze": + t.frozen = true + t.attacks_left = 0 + say("%s ist eingefroren." % t.name) + emit({"type": "freeze", "target": ref_of(t)}) + "bounce": + var o = t.owner() + o.board.erase(t) + emit({"type": "bounce", "target": ref_of(t)}) + if o.hand.size() < MAX_HAND: + o.hand.append(t.card) + say("%s kehrt auf die Hand zurück." % t.name) + else: + say("%s wird weggeweht (Hand voll)." % t.name) + "buff": + t.attack += fx.amount + t.health += fx.amount2 + t.max_health += fx.amount2 + say("%s erhält +%d/+%d." % [t.name, fx.amount, fx.amount2]) + emit({"type": "buff", "target": ref_of(t), "text": "+%d/+%d" % [fx.amount, fx.amount2]}) + "shield": + t.shield = true + say("%s erhält Schild." % t.name) + emit({"type": "buff", "target": ref_of(t), "text": "Schild"}) + "summon": + summon(p, Cards.by_id(fx.card_id)) + + +# --- Kampf ------------------------------------------------------------------- + +func can_attack(cr: Creature, target) -> Array: + if winner != "" or cr.owner() != current(): + return [false, "Nicht dein Zug"] + if not cr.can_attack(): + return [false, "%s kann nicht angreifen" % cr.name] + var tgt_owner = target.owner() if target is Creature else target + if not (tgt_owner in enemies_of(cr.owner())): + return [false, "Kein gültiges Ziel"] + var has_taunt := false + for c in tgt_owner.board: + if c.taunt(): + has_taunt = true + if has_taunt and not (target is Creature and target.taunt()): + return [false, "Ein Wächter muss zuerst angegriffen werden"] + return [true, ""] + + +## Greift an. Gibt "" zurück oder eine Fehlermeldung. +func attack(cr: Creature, target) -> String: + var ok := can_attack(cr, target) + if not ok[0]: + return ok[1] + cr.attacks_left -= 1 + say("%s greift %s an." % [cr.name, target.name]) + emit({"type": "attack", "attacker": ref_of(cr), "target": ref_of(target)}) + var tgt_owner: Player = target.owner() if target is Creature else target + var cancelled := trigger_trap(tgt_owner, "attacked", cr) + if cancelled or not (cr in cr.owner().board) or (target is Creature and not (target in tgt_owner.board)): + check_end() + return "" + damage(target, cr.power()) + if target is Creature: + damage(cr, target.power()) + cleanup() + check_end() + return "" + + +func damage(target, amount: int) -> void: + if amount <= 0: + return + if target is Creature: + if target.shield: + target.shield = false + say("Schild von %s blockt den Schaden." % target.name) + emit({"type": "blocked", "target": ref_of(target)}) + return + target.health -= amount + else: + target.life -= amount + say("%s erleidet %d Schaden." % [target.name, amount]) + emit({"type": "damage", "target": ref_of(target), "amount": amount}) + + +func cleanup() -> void: + var died := false + for p in players: + for c in p.board.duplicate(): + if c.health <= 0: + p.board.erase(c) + say("%s stirbt." % c.name) + emit({"type": "death", "target": ref_of(c)}) + died = true + if died: + update_resonance() + + +## Ende: nur noch ein Spieler übrig, oder kein Mensch mehr am Tisch. +func check_end() -> void: + if winner != "": + return + var alive := players.filter(func(p): return p.alive()) + var humans_alive := alive.filter(func(p): return p.is_human) + if humans_alive.is_empty(): + winner = "opponents" + winner_player = alive[0] if alive.size() == 1 else null + say("Du wurdest besiegt." if humans.size() == 1 else "Alle Spieler sind besiegt, die KI gewinnt.") + elif alive.size() == 1: + winner = "human" + winner_player = alive[0] + say("Alle Gegner sind besiegt!" if humans.size() == 1 else "%s gewinnt!" % winner_player.name) + + +# --- Zustand für das Netzwerk ------------------------------------------------- + +## Serialisierter Zustand aus Sicht eines Spielers: fremde Hände, Decks und Fallen nur als Anzahl. +func snapshot(viewer: int) -> Dictionary: + var ps := [] + for i in players.size(): + var p: Player = players[i] + var mine := i == viewer + var board := [] + for c in p.board: + board.append({"uid": c.uid, "card": c.card.id, "attack": c.attack, "resonance": c.resonance, + "health": c.health, "max_health": c.max_health, "shield": c.shield, "frozen": c.frozen, + "ready": c.ready, "attacks_left": c.attacks_left}) + ps.append({"name": p.name, "title": p.title, "is_human": p.is_human, "life": p.life, "max_life": p.max_life, + "energy": p.energy, "max_energy": p.max_energy, "fatigue": p.fatigue, "start_bonus": p.start_bonus, + "order": p.order, "perks": p.perks, "turns": p.turns, "mulligan_done": p.mulligan_done, + "hand": p.hand.map(func(c): return c.id) if mine else p.hand.size(), + "deck": p.deck.size(), "traps": p.traps.map(func(c): return c.id) if mine else p.traps.size(), + "board": board}) + var evs := [] + for ev in events: + var e: Dictionary = ev.duplicate() + if e.has("card"): + e["card"] = e.card.id + evs.append(e) + return {"players": ps, "human": players.find(human), "turn": turn, "current_idx": current_idx, + "winner": winner, "winner_player": players.find(winner_player) if winner_player != null else -1, + "next_uid": next_uid, "log": log.slice(maxi(0, log.size() - 80)), "events": evs} + + +## Baut einen Spielzustand aus einem Snapshot; verborgene Karten werden durch Platzhalter ersetzt. +static func from_snapshot(d: Dictionary) -> Game: + var placeholder: Cards.Card = Cards.all()[0] + var list := [] + for pd in d.players: + var p := Player.new(pd.name, [], pd.is_human, int(pd.life), pd.title) + p.max_life = int(pd.max_life) + p.energy = int(pd.energy) + p.max_energy = int(pd.max_energy) + p.fatigue = int(pd.fatigue) + p.start_bonus = int(pd.start_bonus) + p.order = int(pd.order) + p.perks = Array(pd.perks) + p.turns = int(pd.turns) + p.mulligan_done = bool(pd.mulligan_done) + if pd.hand is Array: + for cid in pd.hand: + p.hand.append(Cards.by_id(cid)) + else: + for i in int(pd.hand): + p.hand.append(placeholder) + for i in int(pd.deck): + p.deck.append(placeholder) + if pd.traps is Array: + for cid in pd.traps: + p.traps.append(Cards.by_id(cid)) + else: + for i in int(pd.traps): + p.traps.append(placeholder) + for cd in pd.board: + var c := Creature.new(Cards.by_id(cd.card), p, int(cd.uid)) + c.attack = int(cd.attack) + c.resonance = int(cd.resonance) + c.health = int(cd.health) + c.max_health = int(cd.max_health) + c.shield = bool(cd.shield) + c.frozen = bool(cd.frozen) + c.ready = bool(cd.ready) + c.attacks_left = int(cd.attacks_left) + p.board.append(c) + list.append(p) + var hi := int(d.human) + var g := Game.new(list[hi], list.slice(0, hi) + list.slice(hi + 1), RandomNumberGenerator.new()) + g.players = list + g.turn = int(d.turn) + g.current_idx = int(d.current_idx) + g.winner = d.winner + g.winner_player = list[int(d.winner_player)] if int(d.winner_player) >= 0 else null + g.next_uid = int(d.next_uid) + for line in d.log: + g.log.append(str(line)) + for ev in d.events: + var e: Dictionary = ev.duplicate() + if e.has("card"): + e["card"] = Cards.by_id(e.card) + for key in ["player", "uid", "count", "amount"]: + if e.has(key): + e[key] = int(e[key]) + for key in ["target", "attacker", "source"]: + if e.has(key): + var r: Dictionary = e[key] + if r.has("uid"): + r["uid"] = int(r.uid) + if r.has("index"): + r["index"] = int(r.index) + g.events.append(e) + return g + + +# --- Deckregeln und Gegner --------------------------------------------------- + +static func shuffle(arr: Array, r: RandomNumberGenerator) -> void: + for i in range(arr.size() - 1, 0, -1): + var j := r.randi_range(0, i) + var tmp = arr[i] + arr[i] = arr[j] + arr[j] = tmp + + +static func deck_elements(cards: Array) -> Array: + var out := [] + for c in cards: + for e in c.elements: + if not (e in out): + out.append(e) + return out + + +## Prüft ein Deck. owned: Dictionary id -> Anzahl (null = keine Besitzprüfung). +static func validate_deck(cards: Array, owned = null) -> Array: + if cards.size() != DECK_SIZE: + return [false, "Deck braucht genau %d Karten (%d)" % [DECK_SIZE, cards.size()]] + var counts := {} + for c in cards: + counts[c.id] = counts.get(c.id, 0) + 1 + for cid in counts: + if counts[cid] > MAX_COPIES: + return [false, "Höchstens %dx dieselbe Karte" % MAX_COPIES] + if owned != null and owned.get(cid, 0) < counts[cid]: + return [false, "Karte nicht oft genug in der Sammlung"] + if deck_elements(cards).size() > MAX_DECK_ELEMENTS: + return [false, "Höchstens %d Elemente im Deck" % MAX_DECK_ELEMENTS] + return [true, ""] + + +## Gegnerdeck aus den Elementen. bias > 1 bevorzugt seltene Karten (Kampagne). +static func build_opponent_deck(r: RandomNumberGenerator, elements: Array, bias: float = 1.0) -> Array: + var pool := Cards.all().filter(func(c): return c.elements.all(func(e): return e in elements)) + var weights := PackedFloat32Array() + for c in pool: + var w: float = OPPONENT_RARITY_WEIGHT[c.rarity] + weights.append(w / bias if c.rarity == "gewöhnlich" else w * bias) + var deck := [] + var counts := {} + while deck.size() < DECK_SIZE: + var c = pool[r.rand_weighted(weights)] + if counts.get(c.id, 0) < MAX_COPIES: + counts[c.id] = counts.get(c.id, 0) + 1 + deck.append(c) + return deck + + +static func random_opponent(r: RandomNumberGenerator, index: int, life: int = START_LIFE) -> Player: + var elements: Array + if r.randf() < 0.4: + elements = [Cards.ELEMENTS[r.randi_range(0, Cards.ELEMENTS.size() - 1)]] + else: + var pool: Array = Cards.ELEMENTS.duplicate() + shuffle(pool, r) + elements = [pool[0], pool[1]] + return Player.new("Gegner %d" % index, build_opponent_deck(r, elements), false, life, + Cards.combo_name(elements) + "-Magier") + + +## rules: {"human_perks": [...], "everyone_perk": String, "start_life": int} +static func new_battle(deck: Array, n_opp: int, r: RandomNumberGenerator = null, rules: Dictionary = {}) -> Game: + assert(n_opp >= 1 and n_opp <= MAX_OPPONENTS, "1 bis 5 Gegner") + if r == null: + r = make_rng() + var opps := [] + for i in n_opp: + opps.append(random_opponent(r, i + 1)) + return new_battle_with(deck, opps, r, false, rules) + + +static func new_battle_with(deck: Array, opps: Array, r: RandomNumberGenerator = null, fixed_order: bool = false, rules: Dictionary = {}) -> Game: + if r == null: + r = make_rng() + var human := Player.new("Du", deck, true, START_LIFE) + human.perks = Array(rules.get("human_perks", [])) + var g := Game.new(human, opps, r) + var everyone: String = rules.get("everyone_perk", "") + for p in g.players: + if everyone != "" and not (everyone in p.perks): + p.perks.append(everyone) + if rules.has("start_life"): + p.life = int(rules.start_life) + p.max_life = p.life + elif "leben_35" in p.perks and p.life == START_LIFE: + p.life = 35 + p.max_life = 35 + g.start(fixed_order) + return g + + +## Hotseat: mehrere Menschen am selben Rechner, dazu KI-Gegner. +static func new_hotseat(human_decks: Array, n_ai: int, r: RandomNumberGenerator = null) -> Game: + assert(human_decks.size() >= 1 and human_decks.size() + n_ai <= MAX_OPPONENTS + 1, "höchstens 6 am Tisch") + if r == null: + r = make_rng() + var first := Player.new("Spieler 1", human_decks[0], true, START_LIFE) + var others := [] + for i in range(1, human_decks.size()): + others.append(Player.new("Spieler %d" % (i + 1), human_decks[i], true, START_LIFE)) + for i in n_ai: + others.append(random_opponent(r, i + 1)) + var g := Game.new(first, others, r) + g.start() + return g diff --git a/scripts/game.gd.uid b/scripts/game.gd.uid new file mode 100644 index 0000000..fc1eb29 --- /dev/null +++ b/scripts/game.gd.uid @@ -0,0 +1 @@ +uid://d2f2wrhtkb85h diff --git a/scripts/net.gd b/scripts/net.gd new file mode 100644 index 0000000..6037bd3 --- /dev/null +++ b/scripts/net.gd @@ -0,0 +1,279 @@ +class_name Net +extends Node +## LAN-Mehrspieler: der Host führt das Spiel, Mitspieler senden Aktionen und erhalten +## Zustandsbilder aus ihrer Sicht (fremde Hände bleiben verborgen). + +signal lobby_changed +signal started(seat: int) +signal snapshot_received(snap: Dictionary) +signal action_applied +signal ended(reason: String) + +const PORT := 24455 + +var peer: ENetMultiplayerPeer +var is_host := false +var connected := false +var my_name := "Spieler" +var my_deck: Array = [] # Karten-IDs +var names := {} # peer_id -> Name (nur im Host vollständig, sonst Kopie) +var decks := {} # peer_id -> Karten-IDs (Host) +var seats := {} # peer_id -> Spielerindex (Host) +var my_seat := -1 +var game: Game # Host +var status := "" +var waiting := {} # Name -> {"seat": int, "since": float}: Platz nach Verbindungsabbruch freihalten +const REJOIN_SECONDS := 60.0 + + +func _ready() -> void: + multiplayer.peer_connected.connect(_on_peer_connected) + multiplayer.peer_disconnected.connect(_on_peer_disconnected) + multiplayer.connected_to_server.connect(_on_connected) + multiplayer.connection_failed.connect(func(): _fail("Verbindung fehlgeschlagen")) + multiplayer.server_disconnected.connect(func(): _fail("Host hat das Spiel beendet")) + + +func host(port: int = PORT) -> Error: + peer = ENetMultiplayerPeer.new() + var err := peer.create_server(port, Game.MAX_OPPONENTS) + if err != OK: + status = "Kann nicht hosten (Port %d belegt?)" % port + return err + multiplayer.multiplayer_peer = peer + is_host = true + connected = true + names = {1: my_name} + decks = {1: my_deck} + status = "Warte auf Mitspieler …" + lobby_changed.emit() + return OK + + +func join(ip: String, port: int = PORT) -> Error: + peer = ENetMultiplayerPeer.new() + var err := peer.create_client(ip, port) + if err != OK: + status = "Adresse ungültig" + return err + multiplayer.multiplayer_peer = peer + is_host = false + status = "Verbinde mit %s …" % ip + return OK + + +func leave() -> void: + if multiplayer.multiplayer_peer != null: + multiplayer.multiplayer_peer.close() + multiplayer.multiplayer_peer = OfflineMultiplayerPeer.new() + peer = null + is_host = false + connected = false + names = {} + decks = {} + seats = {} + waiting = {} + my_seat = -1 + game = null + status = "" + + +func local_addresses() -> Array: + return Array(IP.get_local_addresses()).filter(func(a): return "." in a and not a.begins_with("127.")) + + +func _fail(reason: String) -> void: + status = reason + ended.emit(reason) + leave() + + +func _on_connected() -> void: + connected = true + status = "Verbunden" + register.rpc_id(1, my_name, my_deck) + + +func _on_peer_connected(_id: int) -> void: + pass + + +func _on_peer_disconnected(id: int) -> void: + if not is_host: + return + var pname: String = names.get(id, "") + names.erase(id) + decks.erase(id) + if game != null and seats.has(id): + var p: Game.Player = game.players[seats[id]] + if game.winner == "": + waiting[pname] = {"seat": seats[id], "since": Time.get_unix_time_from_system()} + game.say("%s hat die Verbindung verloren, der Platz bleibt %d s frei." % [p.name, int(REJOIN_SECONDS)]) + seats.erase(id) + action_applied.emit() + lobby_update.rpc(names) + lobby_changed.emit() + + +## Host, je Bild: wartende Spieler überspringen; nach Ablauf der Frist scheiden sie aus. +func tick() -> void: + if not is_host or game == null or game.winner != "": + return + var now := Time.get_unix_time_from_system() + for pname in waiting.keys(): + var w: Dictionary = waiting[pname] + var p: Game.Player = game.players[w.seat] + if now - float(w.since) > REJOIN_SECONDS: + waiting.erase(pname) + game.say("%s kehrt nicht zurück und scheidet aus." % p.name) + game.damage(p, 999) + game.check_end() + action_applied.emit() + elif game.current() == p: + p.mulligan_done = true + game.say("%s ist nicht da, der Zug wird übersprungen." % p.name) + game.end_turn() + action_applied.emit() + + +@rpc("any_peer", "reliable") +func register(name: String, deck_ids: Array) -> void: + if not is_host: + return + var id := multiplayer.get_remote_sender_id() + if game != null: + # Laufendes Spiel: nur Rückkehr auf einen freigehaltenen Platz + if waiting.has(name): + seats[id] = waiting[name].seat + names[id] = name + waiting.erase(name) + game.say("%s ist zurück." % name) + start_game.rpc_id(id, seats[id]) + receive_snapshot.rpc_id(id, game.snapshot(seats[id])) + action_applied.emit() + else: + status = "%s wollte beitreten, das Spiel läuft schon" % name + return + names[id] = name + decks[id] = deck_ids + lobby_update.rpc(names) + lobby_changed.emit() + + +@rpc("authority", "reliable") +func lobby_update(n: Dictionary) -> void: + names = n + lobby_changed.emit() + + +## Host: Spiel mit allen Verbundenen und n_ai KI-Gegnern starten. +func start_battle(n_ai: int) -> void: + var ids: Array = names.keys() + ids.sort() + var r := Game.make_rng() + var players := [] + seats = {} + for id in ids: + var deck_ids: Array = decks.get(id, []) + var deck := [] + for cid in deck_ids: + if Cards.has_id(cid): + deck.append(Cards.by_id(cid)) + if Game.validate_deck(deck)[0] == false: + var pool: Array = Cards.ELEMENTS.duplicate() + Game.shuffle(pool, r) + deck = Game.build_opponent_deck(r, [pool[0], pool[1]]) + players.append(Game.Player.new(names[id], deck, true, Game.START_LIFE)) + for i in n_ai: + players.append(Game.random_opponent(r, i + 1)) + game = Game.new(players[0], players.slice(1), r) + game.start() + for id in ids: + seats[id] = game.players.find(players[ids.find(id)]) + my_seat = seats[1] + for id in ids: + if id != 1: + start_game.rpc_id(id, seats[id]) + started.emit(my_seat) + + +@rpc("authority", "reliable") +func start_game(seat: int) -> void: + my_seat = seat + started.emit(seat) + + +## Host: Zustand an alle Mitspieler senden (jeder aus seiner Sicht). +func broadcast() -> void: + if not is_host or game == null: + return + for id in seats: + if id != 1: + receive_snapshot.rpc_id(id, game.snapshot(seats[id])) + + +@rpc("authority", "reliable") +func receive_snapshot(snap: Dictionary) -> void: + snapshot_received.emit(snap) + + +## Mitspieler: Aktion an den Host schicken. +func send_action(action: Dictionary) -> void: + if is_host: + _apply(1, action) + else: + request_action.rpc_id(1, action) + + +@rpc("any_peer", "reliable") +func request_action(action: Dictionary) -> void: + if not is_host: + return + _apply(multiplayer.get_remote_sender_id(), action) + + +func _apply(id: int, action: Dictionary) -> void: + if game == null or not seats.has(id): + return + var p: Game.Player = game.players[seats[id]] + if game.current() != p or game.winner != "": + return + match str(action.get("type", "")): + "play": + var idx := int(action.get("hand", -1)) + if idx < 0 or idx >= p.hand.size(): + return + game.play_card(p, p.hand[idx], resolve_ref(action.get("target"))) + "attack": + var cr := game.find_creature(int(action.get("uid", -1))) + var t = resolve_ref(action.get("target")) + if cr != null and t != null: + game.attack(cr, t) + "mulligan": + var cards := [] + for i in action.get("hand", []): + if int(i) >= 0 and int(i) < p.hand.size(): + cards.append(p.hand[int(i)]) + game.mulligan(p, cards) + "end": + game.end_turn() + _: + return + action_applied.emit() + + +func resolve_ref(ref): + if ref == null or not (ref is Dictionary): + return null + if ref.get("kind") == "creature": + return game.find_creature(int(ref.get("uid", -1))) + var i := int(ref.get("index", -1)) + if i >= 0 and i < game.players.size(): + return game.players[i] + return null + + +static func ref_dict(target) -> Dictionary: + if target is Game.Creature: + return {"kind": "creature", "uid": target.uid} + return {"kind": "player", "index": target.order} diff --git a/scripts/net.gd.uid b/scripts/net.gd.uid new file mode 100644 index 0000000..ff855be --- /dev/null +++ b/scripts/net.gd.uid @@ -0,0 +1 @@ +uid://drhh23lblvq8o diff --git a/scripts/profile.gd b/scripts/profile.gd new file mode 100644 index 0000000..4e17667 --- /dev/null +++ b/scripts/profile.gd @@ -0,0 +1,519 @@ +class_name Profile +extends RefCounted +## Spielstand: Sammlung, Münzen, Decks, Staub, Booster, Statistik, Erfolge, Tagesaufgabe, Einstellungen. + +const SAVE_VERSION := 5 +const PITY_BOOSTERS := 20 # danach ist eine mythische Karte garantiert +const SAVE_PATH := "user://spielstand.json" +const BOOSTER_COST := 100 +const BOOSTER_SIZE := 5 +const RARITY_WEIGHTS := {"gewöhnlich": 70.0, "selten": 20.0, "episch": 7.5, "legendär": 2.0, "mythisch": 0.5} +const START_COINS := 150 +const REWARD_WIN := {1: 100, 2: 150, 3: 200, 4: 250, 5: 300} +const REWARD_LOSS := 50 +const DECK_SLOTS := 5 +# Werkstatt: Zerlegen bringt Staub, Herstellen kostet Staub. +const DUST_DISMANTLE := {"gewöhnlich": 5, "selten": 20, "episch": 100, "legendär": 400, "mythisch": 1600} +const DUST_CRAFT := {"gewöhnlich": 40, "selten": 100, "episch": 400, "legendär": 1600, "mythisch": 3200} + +const ACHIEVEMENTS := [ + {"id": "erster_sieg", "name": "Erster Sieg", "text": "Gewinne einen Kampf.", "reward": 50}, + {"id": "duellant", "name": "Duellant", "text": "Gewinne ein Duell.", "reward": 50}, + {"id": "tischherr", "name": "Herr des Tisches", "text": "Gewinne gegen 3 oder mehr Gegner.", "reward": 100}, + {"id": "chaosmeister", "name": "Chaosmeister", "text": "Gewinne gegen 5 Gegner.", "reward": 200}, + {"id": "sammler", "name": "Sammler", "text": "Besitze 40 verschiedene Karten.", "reward": 100}, + {"id": "vollstaendig", "name": "Vollständig", "text": "Besitze jede Karte.", "reward": 500}, + {"id": "boosterfreund", "name": "Boosterfreund", "text": "Öffne 10 Booster.", "reward": 100}, + {"id": "elementarist", "name": "Elementarist", "text": "Gewinne mit einem Deck aus nur einem Element.", "reward": 100}, + {"id": "kombokoenig", "name": "Kombokönig", "text": "Gewinne mit mindestens 6 Kombokarten im Deck.", "reward": 100}, + {"id": "kampagnenheld", "name": "Kampagnenheld", "text": "Schließe Kapitel 1 der Kampagne ab.", "reward": 300}, + {"id": "elementmeister", "name": "Meister der Elemente", "text": "Schließe Kapitel 2 der Kampagne ab.", "reward": 500}, + {"id": "serie", "name": "Siegesserie", "text": "Gewinne fünf Kämpfe in Folge.", "reward": 150}, + {"id": "wochenheld", "name": "Wochenheld", "text": "Bestehe eine wöchentliche Herausforderung.", "reward": 100}, +] + +const DAILY_TASKS := [ + {"id": "sieg", "kind": "win", "text": "Gewinne einen Kampf", "goal": 1, "reward": 80}, + {"id": "kaempfe", "kind": "game", "text": "Bestreite zwei Kämpfe", "goal": 2, "reward": 60}, + {"id": "booster", "kind": "booster", "text": "Öffne einen Booster", "goal": 1, "reward": 40}, + {"id": "wesen", "kind": "creature_played", "text": "Spiele fünf Wesen", "goal": 5, "reward": 50}, + {"id": "falle", "kind": "trap_set", "text": "Lege eine Falle", "goal": 1, "reward": 50}, + {"id": "kombo", "kind": "combo", "text": "Löse zwei Feldkombos aus", "goal": 2, "reward": 60}, + {"id": "herstellen", "kind": "craft", "text": "Stelle eine Karte her", "goal": 1, "reward": 50}, + {"id": "tisch", "kind": "win_vs3", "text": "Gewinne gegen 3 oder mehr Gegner", "goal": 1, "reward": 120}, + {"id": "feuer", "kind": "win_element:Feuer", "text": "Gewinne mit einem Feuer-Deck", "goal": 1, "reward": 90}, + {"id": "wasser", "kind": "win_element:Wasser", "text": "Gewinne mit einem Wasser-Deck", "goal": 1, "reward": 90}, + {"id": "erde", "kind": "win_element:Erde", "text": "Gewinne mit einem Erde-Deck", "goal": 1, "reward": 90}, + {"id": "luft", "kind": "win_element:Luft", "text": "Gewinne mit einem Luft-Deck", "goal": 1, "reward": 90}, +] + +static var today_override := "" # für Tests + +var coins := 0 +var dust := 0 +var collection := {} # id -> Anzahl +var decks: Array = [] # DECK_SLOTS Einträge {"name": String, "cards": Array von ids} +var active_deck := 0 +var stats := {"games": 0, "wins": 0, "boosters": 0, "wins_by_opp": {}} +var achievements: Array = [] +var campaign_stage := 0 # Anzahl abgeschlossener Kampagnenstufen +var daily := {"date": "", "task": "", "progress": 0, "done": false} +var settings := {"volume": 0.8, "music": 0.5, "ai_speed": 1.0, "animations": true, "language": "de"} +var notices: Array[String] = [] # Meldungen für die Oberfläche (Erfolge, Tagesaufgabe) +var card_stats := {} # id -> {"played", "games", "wins"} +var booster_since_mythic := 0 +var tutorial_done := false +var perk := "" # gewähltes eigenes Merkmal (nach Kapitel 1) +var records := {"streak": 0, "best_streak": 0, "fastest_win": 0} +var challenge_week := -1 # Woche der zuletzt bestandenen Herausforderung + +## Das aktive Deck (Kartenliste des gewählten Slots). +var deck: Array: + get: + return decks[active_deck].cards + set(value): + decks[active_deck].cards = value + + +func _init() -> void: + for i in DECK_SLOTS: + decks.append({"name": "Deck %d" % (i + 1), "cards": []}) + + +static func starter() -> Profile: + var p := Profile.new() + p.coins = START_COINS + for c in Cards.of_rarity("gewöhnlich"): + if c.id.begins_with("f_") or c.id.begins_with("w_") or c.id.begins_with("e_") or c.id.begins_with("l_"): + p.collection[c.id] = 2 + var starter_ids := ["f_funke", "f_kobold", "f_wolf", "f_feuerball", "f_asche", + "e_wall", "e_wurzel", "e_haerten", "e_golem", "e_troll"] + for cid in starter_ids: + p.deck.append(cid) + p.deck.append(cid) + return p + + +## Lädt den Spielstand; bei Schaden die Sicherung; sonst ein neues Profil. +static func load_or_new(path: String = SAVE_PATH) -> Profile: + for candidate in [path, path + ".bak"]: + if FileAccess.file_exists(candidate): + var json := JSON.new() + if json.parse(FileAccess.get_file_as_string(candidate)) == OK and json.data is Dictionary: + return from_dict(json.data) + if FileAccess.file_exists(path): + DirAccess.rename_absolute(ProjectSettings.globalize_path(path), ProjectSettings.globalize_path(path) + ".corrupt") + var p := starter() + p.save(path) + return p + + +## Liest jede Spielstand-Version; fehlende Felder bekommen Standardwerte (Migration). +static func from_dict(d: Dictionary) -> Profile: + var p := Profile.new() + var version := int(d.get("version", 1)) + p.coins = int(d.get("coins", 0)) + p.dust = int(d.get("dust", 0)) + var coll = d.get("collection", {}) + for cid in coll: + if Cards.has_id(cid): + p.collection[cid] = int(coll[cid]) + if version >= 3: + var list = d.get("decks", []) + for i in mini(list.size(), DECK_SLOTS): + p.decks[i].name = str(list[i].get("name", "Deck %d" % (i + 1))) + p.decks[i].cards = [] + for cid in list[i].get("cards", []): + if Cards.has_id(cid): + p.decks[i].cards.append(cid) + p.active_deck = clampi(int(d.get("active_deck", 0)), 0, DECK_SLOTS - 1) + else: + for cid in d.get("deck", []): + if Cards.has_id(cid): + p.decks[0].cards.append(cid) + if version >= 2: + var st = d.get("stats", {}) + p.stats.games = int(st.get("games", 0)) + p.stats.wins = int(st.get("wins", 0)) + p.stats.boosters = int(st.get("boosters", 0)) + for k in st.get("wins_by_opp", {}): + p.stats.wins_by_opp[str(k)] = int(st.wins_by_opp[k]) + for a in d.get("achievements", []): + p.achievements.append(str(a)) + p.campaign_stage = int(d.get("campaign_stage", 0)) + var dl = d.get("daily", {}) + p.daily = {"date": str(dl.get("date", "")), "task": str(dl.get("task", "")), + "progress": int(dl.get("progress", 0)), "done": bool(dl.get("done", false))} + var se = d.get("settings", {}) + p.settings = {"volume": float(se.get("volume", 0.8)), "music": float(se.get("music", 0.5)), + "ai_speed": float(se.get("ai_speed", 1.0)), "animations": bool(se.get("animations", true)), + "language": str(se.get("language", "de"))} + if version >= 4: + for cid in d.get("card_stats", {}): + if Cards.has_id(cid): + var st = d.card_stats[cid] + p.card_stats[cid] = {"played": int(st.get("played", 0)), "games": int(st.get("games", 0)), "wins": int(st.get("wins", 0))} + p.booster_since_mythic = int(d.get("booster_since_mythic", 0)) + p.tutorial_done = bool(d.get("tutorial_done", false)) + if version >= 5: + p.perk = str(d.get("perk", "")) + if not Game.PERKS.has(p.perk): + p.perk = "" + var rc = d.get("records", {}) + p.records = {"streak": int(rc.get("streak", 0)), "best_streak": int(rc.get("best_streak", 0)), + "fastest_win": int(rc.get("fastest_win", 0))} + p.challenge_week = int(d.get("challenge_week", -1)) + return p + + +func to_dict() -> Dictionary: + return {"version": SAVE_VERSION, "coins": coins, "dust": dust, "collection": collection, + "decks": decks, "active_deck": active_deck, + "stats": stats, "achievements": achievements, "campaign_stage": campaign_stage, + "daily": daily, "settings": settings, "card_stats": card_stats, + "booster_since_mythic": booster_since_mythic, "tutorial_done": tutorial_done, + "perk": perk, "records": records, "challenge_week": challenge_week} + + +## Speichert und sichert den vorherigen Stand als .bak. +func save(path: String = SAVE_PATH) -> void: + var abs := ProjectSettings.globalize_path(path) + if FileAccess.file_exists(path): + DirAccess.copy_absolute(abs, abs + ".bak") + var f := FileAccess.open(path, FileAccess.WRITE) + f.store_string(JSON.stringify(to_dict(), "\t")) + f.close() + + +func take_notices() -> Array[String]: + var out := notices.duplicate() + notices.clear() + return out + + +# --- Decks und Sammlung ----------------------------------------------------------- + +func deck_cards(slot: int = -1) -> Array: + var ids: Array = decks[slot if slot >= 0 else active_deck].cards + var out := [] + for cid in ids: + out.append(Cards.by_id(cid)) + return out + + +func deck_valid(slot: int = -1) -> Array: + return Game.validate_deck(deck_cards(slot), collection) + + +func deck_name(slot: int = -1) -> String: + return decks[slot if slot >= 0 else active_deck].name + + +func rename_deck(slot: int, name: String) -> String: + var n := name.strip_edges() + if n.is_empty() or n.length() > 20: + return "Name muss 1 bis 20 Zeichen haben" + decks[slot].name = n + return "" + + +## Füllt einen Slot mit eigenen Karten auf 20 auf, entlang einer Energiekurve. +## Ohne Karten im Slot werden die beiden Elemente mit den meisten eigenen Karten gewählt. +func autofill_deck(slot: int) -> String: + var cards: Array = decks[slot].cards + var elems := Game.deck_elements(deck_cards(slot)) + if elems.is_empty(): + var count := {} + for c in owned_cards(): + for e in c.elements: + count[e] = count.get(e, 0) + 1 + var ranked: Array = count.keys() + ranked.sort_custom(func(a, b): return count[a] > count[b]) + elems = ranked.slice(0, Game.MAX_DECK_ELEMENTS) + var pool := owned_cards().filter(func(c): return c.elements.all(func(e): return e in elems)) + pool.sort_custom(func(a, b): return Cards.RARITIES.find(a.rarity) > Cards.RARITIES.find(b.rarity)) + var counts := {} + for cid in cards: + counts[cid] = counts.get(cid, 0) + 1 + var progressed := true + while cards.size() < Game.DECK_SIZE and progressed: + progressed = false + for cost in range(1, 11): + if cards.size() >= Game.DECK_SIZE: + break + for c in pool: + if c.cost != cost: + continue + var have: int = counts.get(c.id, 0) + if have < mini(collection.get(c.id, 0), Game.MAX_COPIES): + cards.append(c.id) + counts[c.id] = have + 1 + progressed = true + break + var ok := Game.validate_deck(deck_cards(slot), collection) + return "" if ok[0] else ok[1] + + +## Bestenliste: Karten mit den meisten Siegen (mindestens eine Partie). +func top_cards(n: int) -> Array: + var rows := [] + for cid in card_stats: + var st: Dictionary = card_stats[cid] + if st.games > 0: + rows.append({"card": Cards.by_id(cid), "games": st.games, "wins": st.wins, "played": st.played, + "rate": float(st.wins) / st.games}) + rows.sort_custom(func(a, b): return a.wins > b.wins or (a.wins == b.wins and a.rate > b.rate)) + return rows.slice(0, n) + + +func owned_cards() -> Array: + return Cards.all().filter(func(c): return collection.get(c.id, 0) > 0) + + +func distinct_owned() -> int: + var n := 0 + for cid in collection: + if collection[cid] > 0: + n += 1 + return n + + +# --- Werkstatt -------------------------------------------------------------------- + +## Zerlegt n Kopien in Staub. Gibt "" zurück oder eine Fehlermeldung. +func dismantle(cid: String, n: int = 1) -> String: + var owned: int = collection.get(cid, 0) + if owned < n: + return "Nicht genug Kopien" + var needed := 0 + for d in decks: + needed = maxi(needed, d.cards.count(cid)) + if owned - n < needed: + return "Wird in einem Deck gebraucht" + collection[cid] = owned - n + dust += DUST_DISMANTLE[Cards.by_id(cid).rarity] * n + return "" + + +## Stellt eine Karte aus Staub her. Gibt "" zurück oder eine Fehlermeldung. +func craft(cid: String) -> String: + var cost: int = DUST_CRAFT[Cards.by_id(cid).rarity] + if dust < cost: + return "Nicht genug Staub (%d nötig)" % cost + dust -= cost + collection[cid] = collection.get(cid, 0) + 1 + daily_event("craft") + check_achievements() + return "" + + +## Zerlegt alle Kopien über dem Deck-Limit. Gibt den gewonnenen Staub zurück. +func dismantle_extras() -> int: + var before := dust + for cid in collection.keys(): + var extra: int = collection[cid] - Game.MAX_COPIES + if extra > 0: + dismantle(cid, extra) + return dust - before + + +# --- Booster ---------------------------------------------------------------------- + +static func roll_booster(r: RandomNumberGenerator) -> Array: + var rarities := RARITY_WEIGHTS.keys() + var weights := PackedFloat32Array(RARITY_WEIGHTS.values()) + var cards := [] + for i in BOOSTER_SIZE: + var rarity: String = rarities[r.rand_weighted(weights)] + if i == BOOSTER_SIZE - 1 and rarity == "gewöhnlich" \ + and cards.all(func(c): return c.rarity == "gewöhnlich"): + rarity = "selten" # mindestens eine seltene Karte pro Booster + var pool := Cards.of_rarity(rarity) + cards.append(pool[r.randi_range(0, pool.size() - 1)]) + return cards + + +## Öffnet einen Booster. Gibt die Karten zurück, leer wenn die Münzen nicht reichen. +func open_booster(r: RandomNumberGenerator = null) -> Array: + if coins < BOOSTER_COST: + return [] + if r == null: + r = Game.make_rng() + coins -= BOOSTER_COST + var cards := roll_booster(r) + booster_since_mythic += 1 + var has_mythic: bool = cards.any(func(c): return c.rarity == "mythisch") + if booster_since_mythic >= PITY_BOOSTERS and not has_mythic: + var pool := Cards.of_rarity("mythisch") + cards[BOOSTER_SIZE - 1] = pool[r.randi_range(0, pool.size() - 1)] + has_mythic = true + if has_mythic: + booster_since_mythic = 0 + for c in cards: + collection[c.id] = collection.get(c.id, 0) + 1 + stats.boosters += 1 + daily_event("booster") + check_achievements() + return cards + + +# --- Kampfergebnis, Erfolge, Tagesaufgabe ------------------------------------------- + +## Verbucht ein Kampfergebnis und gibt die Münzbelohnung zurück. +## stage >= 0: Kampagnenstufe; ein erster Sieg schaltet die nächste Stufe frei. +## turns: Dauer der Partie für die Bestenliste. challenge: Herausforderung dieser Woche. +func record_battle(won: bool, n_opp: int, deck_used: Array, stage: int = -1, played_ids: Array = [], + turns: int = 0, challenge: Dictionary = {}) -> int: + stats.games += 1 + if won: + records.streak += 1 + records.best_streak = maxi(records.best_streak, records.streak) + if turns > 0 and (records.fastest_win == 0 or turns < records.fastest_win): + records.fastest_win = turns + else: + records.streak = 0 + for cid in played_ids: + _stat(cid).played += 1 + var seen := {} + for c in deck_used: + if not seen.has(c.id): + seen[c.id] = true + _stat(c.id).games += 1 + if won: + _stat(c.id).wins += 1 + var reward := REWARD_LOSS + if won: + stats.wins += 1 + var key := str(n_opp) + stats.wins_by_opp[key] = int(stats.wins_by_opp.get(key, 0)) + 1 + reward = REWARD_WIN[n_opp] + if stage >= 0 and stage == campaign_stage: + campaign_stage += 1 + reward = Campaign.stage(stage).reward + notices.append("Kampagne: %s besiegt!" % Campaign.stage(stage).name) + if not challenge.is_empty() and challenge_week != Challenge.week(): + challenge_week = Challenge.week() + reward = challenge.reward + notices.append("Herausforderung bestanden: %s (+%d Münzen)" % [challenge.name, challenge.reward]) + coins += reward + daily_event("game") + if won: + daily_event("win") + if n_opp >= 3: + daily_event("win_vs3") + for e in Game.deck_elements(deck_used): + daily_event("win_element:" + e) + check_achievements({"won": won, "n_opp": n_opp, "deck": deck_used}) + return reward + + +func _stat(cid: String) -> Dictionary: + if not card_stats.has(cid): + card_stats[cid] = {"played": 0, "games": 0, "wins": 0} + return card_stats[cid] + + +func check_achievements(ctx: Dictionary = {}) -> Array: + var unlocked := [] + for a in ACHIEVEMENTS: + if a.id in achievements: + continue + if _achieved(a.id, ctx): + achievements.append(a.id) + coins += a.reward + unlocked.append(a) + notices.append("Erfolg: %s (+%d Münzen)" % [a.name, a.reward]) + return unlocked + + +func _achieved(id: String, ctx: Dictionary) -> bool: + var won: bool = ctx.get("won", false) + var n: int = ctx.get("n_opp", 0) + var deck_used: Array = ctx.get("deck", []) + match id: + "erster_sieg": + return stats.wins >= 1 + "duellant": + return won and n == 1 + "tischherr": + return won and n >= 3 + "chaosmeister": + return won and n == 5 + "sammler": + return distinct_owned() >= 40 + "vollstaendig": + return distinct_owned() >= Cards.all().size() + "boosterfreund": + return stats.boosters >= 10 + "elementarist": + return won and Game.deck_elements(deck_used).size() == 1 + "kombokoenig": + return won and deck_used.filter(func(c): return c.is_combo()).size() >= 6 + "kampagnenheld": + return campaign_stage >= Campaign.STAGES.size() + "elementmeister": + return campaign_stage >= Campaign.total() + "serie": + return records.best_streak >= 5 + "wochenheld": + return challenge_week >= 0 + return false + + +func perk_unlocked() -> bool: + return campaign_stage >= Campaign.STAGES.size() + + +## Schreibt Statistik als CSV (Kartenwerte und Gesamtzahlen), z. B. für Spieltests. +func export_stats(path: String) -> String: + var f := FileAccess.open(path, FileAccess.WRITE) + if f == null: + return "Datei nicht schreibbar" + f.store_line("karte;seltenheit;gespielt;partien;siege") + for cid in card_stats: + var st: Dictionary = card_stats[cid] + var c := Cards.by_id(cid) + f.store_line("%s;%s;%d;%d;%d" % [c.name, c.rarity, st.played, st.games, st.wins]) + f.store_line("") + f.store_line("kaempfe;%d" % stats.games) + f.store_line("siege;%d" % stats.wins) + f.store_line("booster;%d" % stats.boosters) + f.store_line("beste_serie;%d" % records.best_streak) + f.store_line("schnellster_sieg;%d" % records.fastest_win) + f.close() + return "" + + +static func today() -> String: + return today_override if today_override != "" else Time.get_date_string_from_system() + + +## Wählt die Tagesaufgabe neu, wenn ein neuer Tag begonnen hat. +func refresh_daily() -> void: + var t := today() + if daily.date != t: + var day_number := int(Time.get_unix_time_from_datetime_string(t + "T00:00:00") / 86400) + var task: Dictionary = DAILY_TASKS[day_number % DAILY_TASKS.size()] + daily = {"date": t, "task": task.id, "progress": 0, "done": false} + + +func daily_task() -> Dictionary: + refresh_daily() + for t in DAILY_TASKS: + if t.id == daily.task: + return t + return DAILY_TASKS[0] + + +## Zählt ein Ereignis (siehe DAILY_TASKS) für die Tagesaufgabe. Gibt die Belohnung zurück. +func daily_event(kind: String, n: int = 1) -> int: + var task := daily_task() + if daily.done or task.kind != kind: + return 0 + daily.progress += n + if daily.progress >= task.goal: + daily.done = true + coins += task.reward + notices.append("Tagesaufgabe erfüllt: %s (+%d Münzen)" % [task.text, task.reward]) + return task.reward + return 0 diff --git a/scripts/profile.gd.uid b/scripts/profile.gd.uid new file mode 100644 index 0000000..6373b42 --- /dev/null +++ b/scripts/profile.gd.uid @@ -0,0 +1 @@ +uid://bg5qbfgyjxsyq diff --git a/scripts/ui/achievements_screen.gd b/scripts/ui/achievements_screen.gd new file mode 100644 index 0000000..1ab7406 --- /dev/null +++ b/scripts/ui/achievements_screen.gd @@ -0,0 +1,45 @@ +class_name AchievementsScreen +extends Control + +var app + + +func _ready() -> void: + var p: Profile = app.profile + var col := Style.column(self, 900, 20, 5) + Style.clabel(col, "Erfolge", 36, Style.GOLD, "center", true) + var st: Dictionary = p.stats + Style.clabel(col, "Kämpfe %d · Siege %d · Booster %d · Kampagne %d/%d" % [ + st.games, st.wins, st.boosters, p.campaign_stage, Campaign.STAGES.size()], 16, Style.MUTED) + var task := p.daily_task() + var daily_text: String = ("Tagesaufgabe erledigt: %s ✓" % task.text) if p.daily.done else \ + "Tagesaufgabe: %s (%d/%d) · +%d Münzen" % [task.text, p.daily.progress, task.goal, task.reward] + Style.clabel(col, daily_text, 16, Style.BLUE) + Style.spacer(col, 8) + for a in Profile.ACHIEVEMENTS: + var done: bool = a.id in p.achievements + var panel := PanelContainer.new() + panel.add_theme_stylebox_override("panel", Style.box(Style.PANEL if done else Style.darker(Style.PANEL, 0.8), 6)) + col.add_child(panel) + var r := Style.row(panel, 12) + r.custom_minimum_size = Vector2(0, 42) + Style.clabel(r, "✓" if done else "·", 22, Style.GREEN if done else Style.MUTED, "center", true, 40) + Style.clabel(r, a.name, 18, Style.TEXT if done else Style.MUTED, "left", true, 250) + Style.clabel(r, a.text, 15, Style.MUTED, "left", false, 380) + Style.clabel(r, "+%d" % a.reward, 16, Style.GOLD, "right", true, 90) + var top := p.top_cards(5) + if not top.is_empty(): + Style.spacer(col, 4) + var parts: Array[String] = [] + for row in top: + parts.append("%s %d/%d" % [row.card.name, row.wins, row.games]) + Style.clabel(col, "Beste Karten (Siege/Partien): " + " · ".join(parts), 14, Style.MUTED) + Style.spacer(col, 6) + var br := Style.row(col) + br.alignment = BoxContainer.ALIGNMENT_CENTER + Style.cbutton(br, "Zurück", Vector2(160, 44), func(): app.show_screen(MenuScreen.new())) + + +func _input(event: InputEvent) -> void: + if event is InputEventKey and event.pressed and event.keycode == KEY_ESCAPE: + app.show_screen(MenuScreen.new()) diff --git a/scripts/ui/achievements_screen.gd.uid b/scripts/ui/achievements_screen.gd.uid new file mode 100644 index 0000000..a1cfb54 --- /dev/null +++ b/scripts/ui/achievements_screen.gd.uid @@ -0,0 +1 @@ +uid://cw4rtcukefdl8 diff --git a/scripts/ui/battle_fx.gd b/scripts/ui/battle_fx.gd new file mode 100644 index 0000000..cae53ce --- /dev/null +++ b/scripts/ui/battle_fx.gd @@ -0,0 +1,159 @@ +class_name BattleFx +extends RefCounted +## Animationen und Töne des Kampfes aus den Spielereignissen. + +var screen # BattleScreen +var enabled := true + + +func _init(s) -> void: + screen = s + + +func sfx(kind: String) -> void: + screen.app.sfx.play(kind) + + +## Spielt die Ereignisse einer Aktion ab. centers: vorher gemerkte Positionen (für gestorbene Wesen). +func play_events(evs: Array, centers: Dictionary) -> void: + var g: Game = screen.game + var delay := 0.0 + for ev in evs: + match ev.type: + "attack": + sfx("attack") + var atk: CreatureView = screen.tiles.get(ev.attacker.uid) + lunge(atk, center_of(ev.target, centers)) + flash_target(ev.target) + delay = 0.12 + "damage": + sfx("damage") + popup("-%d" % ev.amount, Style.RED, center_of(ev.target, centers), delay) + "heal": + sfx("heal") + popup("+%d" % ev.amount, Style.GREEN, center_of(ev.target, centers), delay) + "buff": + popup(ev.text, Style.GREEN, center_of(ev.target, centers), delay) + "blocked": + popup("Schild!", Style.BLUE, center_of(ev.target, centers), delay) + "freeze": + popup("Eis", Color("aaddff"), center_of(ev.target, centers), delay) + "combo": + sfx("combo") + var where: Vector2 = screen.target_center({"kind": "creature", "uid": ev.uid}) + if where.x < 0: + where = screen.target_center({"kind": "player", "index": ev.player}) + popup("Feldkombo %s!" % ev.name, Style.GOLD, where + Vector2(0, -30), 0.1) + "play": + sfx("play") + "spell": + sfx("play") + var caster: Game.Player = g.players[ev.player] + popup(ev.card.name, Style.GOLD, screen.target_center({"kind": "player", "index": ev.player}), 0.0) + if caster != screen.perspective: + screen.show_preview(ev.card, true) + screen.preview_timer = 1.6 + "trap_set": + sfx("click") + popup("Falle gelegt", Style.MUTED, screen.target_center({"kind": "player", "index": ev.player}), 0.0) + "trap": + sfx("combo") + popup("Falle: %s!" % ev.card.name, Style.ORANGE, screen.target_center({"kind": "player", "index": ev.player}) + Vector2(0, -20), 0.0) + screen.show_preview(ev.card, true) + screen.preview_timer = 1.8 + "mulligan": + if ev.count > 0: + popup("tauscht %d Karten" % ev.count, Style.MUTED, screen.target_center({"kind": "player", "index": ev.player}), 0.0) + + +func center_of(ref: Dictionary, centers: Dictionary) -> Vector2: + var c: Vector2 = centers.get(screen.ref_key(ref), Vector2(-1, -1)) + if c.x < 0: + c = screen.target_center(ref) + return c + + +func popup(text: String, color: Color, at: Vector2, delay: float) -> void: + if not enabled or at.x < 0: + return + var l := Label.new() + l.text = text + l.add_theme_font_size_override("font_size", 22) + l.add_theme_font_override("font", Style.FONT_BOLD) + l.add_theme_color_override("font_color", color) + l.add_theme_color_override("font_outline_color", Color(0, 0, 0, 0.9)) + l.add_theme_constant_override("outline_size", 6) + l.mouse_filter = Control.MOUSE_FILTER_IGNORE + screen.fx_layer.add_child(l) + l.reset_size() + l.position = at - l.size / 2 + l.modulate.a = 0.0 + var tw: Tween = screen.create_tween() + tw.tween_interval(delay) + tw.tween_property(l, "modulate:a", 1.0, 0.08) + tw.tween_property(l, "position:y", l.position.y - 44, 0.8).set_ease(Tween.EASE_OUT) + tw.parallel().tween_property(l, "modulate:a", 0.0, 0.5).set_delay(0.35) + tw.tween_callback(l.queue_free) + + +func lunge(tile: CreatureView, target: Vector2) -> void: + if tile == null or not enabled or target.x < 0: + return + tile.busy = true + var start := tile.slot + var dest := start + (target - (start + tile.size / 2)) * 0.35 + var tw := tile.create_tween() + tw.tween_property(tile, "position", dest, 0.12).set_ease(Tween.EASE_OUT) + tw.tween_property(tile, "position", start, 0.15).set_ease(Tween.EASE_IN) + tw.tween_callback(func(): + tile.busy = false + tile.position = tile.slot) + + +func flash_target(ref: Dictionary) -> void: + if not enabled: + return + if ref.kind == "creature": + var tile: CreatureView = screen.tiles.get(ref.uid) + if tile == null: + return + tile.flash = true + tile.queue_redraw() + var tw := tile.create_tween() + tw.tween_interval(0.35) + tw.tween_callback(func(): + tile.flash = false + tile.queue_redraw()) + else: + screen.flash_until[int(ref.index)] = Time.get_ticks_msec() + 350 + var tw: Tween = screen.create_tween() + tw.tween_interval(0.37) + tw.tween_callback(screen.refresh) + + +func pop_in(tile: CreatureView) -> void: + if not enabled: + return + tile.scale = Vector2(0.2, 0.2) + tile.modulate.a = 0.0 + var tw := tile.create_tween().set_parallel(true) + tw.tween_property(tile, "scale", Vector2.ONE, 0.25).set_trans(Tween.TRANS_BACK).set_ease(Tween.EASE_OUT) + tw.tween_property(tile, "modulate:a", 1.0, 0.15) + + +func fade_out(tile: CreatureView) -> void: + tile.mouse_filter = Control.MOUSE_FILTER_IGNORE + if not enabled: + tile.queue_free() + return + var tw := tile.create_tween().set_parallel(true) + tw.tween_property(tile, "modulate:a", 0.0, 0.3) + tw.tween_property(tile, "scale", Vector2(0.6, 0.6), 0.3) + tw.chain().tween_callback(tile.queue_free) + + +func move_to(tile: CreatureView, pos: Vector2) -> void: + if enabled: + screen.create_tween().tween_property(tile, "position", pos, 0.2) + else: + tile.position = pos diff --git a/scripts/ui/battle_fx.gd.uid b/scripts/ui/battle_fx.gd.uid new file mode 100644 index 0000000..6fd67c0 --- /dev/null +++ b/scripts/ui/battle_fx.gd.uid @@ -0,0 +1 @@ +uid://defclm4nv6rkn diff --git a/scripts/ui/battle_layout.gd b/scripts/ui/battle_layout.gd new file mode 100644 index 0000000..47f4e3f --- /dev/null +++ b/scripts/ui/battle_layout.gd @@ -0,0 +1,40 @@ +class_name BattleLayout +## Feste Bildschirmaufteilung des Kampfes (1280x800). + +const SIZES := {1: [110, 110, 10], 2: [96, 110, 8], 3: [78, 100, 4], 4: [54, 72, 4], 5: [44, 62, 3]} +const HAND_W := 130 +const HAND_H := 185 +const HAND_GAP := 8 +const BAR := Rect2(335, 415, 610, 68) +const OWN_X := (1280 - 5 * 110 - 4 * 10) / 2 + + +static func compact(n_others: int) -> bool: + return n_others >= 4 + + +static func hero_box_rect(n_others: int, i: int) -> Rect2: + var col_w := 1280 / n_others + var margin := 6 if compact(n_others) else 10 + return Rect2(i * col_w + margin, 10, col_w - 2 * margin, 64) + + +static func own_slot(j: int) -> Rect2: + return Rect2(OWN_X + j * 120, 250, 110, 140) + + +static func other_slot(n_others: int, i: int, j: int) -> Rect2: + var col_w := 1280 / n_others + var sz: Array = SIZES[n_others] + var bx: int = i * col_w + (col_w - 5 * sz[0] - 4 * sz[2]) / 2 + return Rect2(bx + j * (sz[0] + sz[2]), 84, sz[0], sz[1]) + + +static func hand_rect(count: int, i: int) -> Rect2: + var total := count * HAND_W + maxi(0, count - 1) * HAND_GAP + var x := (1280 - total) / 2 + return Rect2(x + i * (HAND_W + HAND_GAP), 800 - HAND_H - 8, HAND_W, HAND_H) + + +static func trap_rect(i: int) -> Rect2: + return Rect2(400 + i * 78, 490, 70, 98) diff --git a/scripts/ui/battle_layout.gd.uid b/scripts/ui/battle_layout.gd.uid new file mode 100644 index 0000000..4c79ad8 --- /dev/null +++ b/scripts/ui/battle_layout.gd.uid @@ -0,0 +1 @@ +uid://5sjeymvcgfl7 diff --git a/scripts/ui/battle_screen.gd b/scripts/ui/battle_screen.gd new file mode 100644 index 0000000..55a51f5 --- /dev/null +++ b/scripts/ui/battle_screen.gd @@ -0,0 +1,945 @@ +class_name BattleScreen +extends Control +## Kampf: Zustand, Eingabe und Abgleich der Ansicht. Layout in BattleLayout, Animationen in BattleFx. +## Modi: Einzelspieler, Kampagne, Anleitung, Hotseat (Perspektivwechsel), Netzwerk (Host oder Mitspieler). + +var app +var n_opp: int +var stage := -1 # Kampagnenstufe oder -1 +var tutorial := false +var hotseat_decks: Array = [] +var hotseat_ai := 0 +var online_seat := -1 # Netzwerk: eigener Platz, sonst -1 +var net: Net +var game: Game +var perspective: Game.Player # der Mensch, dessen Hand unten liegt +var fx: BattleFx +var selected = null # Game.Creature +var pending = null # Cards.Card, wartet auf Ziel +var msg_t := 0.0 +var ai_delay := 0.75 +var ai_timer := 0.0 +var reward := -1 +var ended := false +var zoom_player = null +var preview_timer := 0.0 +var played_ids: Array = [] # vom Menschen gespielte Karten (Statistik) +var mulligan_selected: Array = [] +var tutorial_step := 0 + +# Ansichten (auch für Tests) +var tiles := {} +var hand_views: Array = [] +var own_views: Array = [] +var enemy_views: Array = [] +var trap_views: Array = [] +var hero_panels := {} # Player -> Panel +var hero_labels := {} +var flash_until := {} # Spielerindex -> Zeitpunkt (ms) + +var hero_layer: Control +var tile_layer: Control +var hand_layer: Control +var trap_layer: Control +var zoom_layer: Control +var fx_layer: Control +var log_box: RichTextLabel +var preview_holder: Control +var preview_hint: Label +var bar_panel: Panel +var name_label: Label +var life_label: Label +var energy_label: Label +var deck_label: Label +var status_label: Label +var msg_label: Label +var b_end: Button +var b_giveup: Button +var overlay: Control +var result_label: Label +var reward_label: Label +var notice_label: Label +var confirm: Control +var handover: Control +var handover_label: Label +var mulligan_box: Control +var mulligan_layer: Control +var b_keep: Button +var b_swap: Button +var tutorial_panel: Panel +var tutorial_text: RichTextLabel +var b_tut_next: Button +var wait_label: Label + +const TUTORIAL_STEPS := [ + ["Willkommen! Unten liegt deine Hand. Jede Karte kostet Energie (◆), du hast im ersten Zug 1. Spiele ein Wesen mit Kosten 1 per Klick.", + "played_creature"], + ["Wesen greifen erst ab dem nächsten Zug an. Beende deinen Zug mit dem Knopf rechts oder der Leertaste.", "turn_passed"], + ["Grüne Rahmen zeigen angriffsbereite Wesen. Klicke ein Wesen und dann Fenn oder eines seiner Wesen. Wächter müssen zuerst fallen.", "attacked"], + ["Resonanz: Wesen mit gleichem Element geben sich gegenseitig +1 Angriff. Spiele ein zweites Feuer- oder Erde-Wesen.", "resonance"], + ["Feldkombo: Ein Wesen neben einem eigenen Wesen mit anderem Element löst einen Effekt aus. Lava macht 1 Schaden an alle gegnerischen Wesen.", "combo"], + ["Zauber wirken sofort. Funke oder Feuerball treffen auch Fenn direkt. Ziele wählst du per Klick, Rechtsklick bricht ab.", "spell"], + ["Fenn verliert bei 0 Leben. Tausche im ersten Zug einer Partie schwache Starthände (Mulligan). Viel Erfolg!", ""], +] + + +func _init(n: int = 2, campaign_stage: int = -1) -> void: + n_opp = n + stage = campaign_stage + + +static func hotseat(decks: Array, n_ai: int) -> BattleScreen: + var b := BattleScreen.new(0, -1) + b.hotseat_decks = decks + b.hotseat_ai = n_ai + return b + + +static func online(seat: int) -> BattleScreen: + var b := BattleScreen.new(0, -1) + b.online_seat = seat + return b + + +static func guided() -> BattleScreen: + var b := BattleScreen.new(1, -1) + b.tutorial = true + return b + + +func is_hotseat() -> bool: + return game != null and game.humans.size() > 1 and online_seat < 0 + + +func is_online() -> bool: + return online_seat >= 0 + + +func is_client() -> bool: + return is_online() and not net.is_host + + +func counts_for_profile() -> bool: + return not is_hotseat() and not is_online() + + +func _ready() -> void: + var s: Dictionary = app.profile.settings + fx = BattleFx.new(self) + fx.enabled = s.animations + ai_delay = 0.75 / float(s.ai_speed) + _build_static() + if is_online(): + net = app.net + net.ended.connect(_on_net_ended) + if net.is_host: + game = net.game + net.action_applied.connect(after_action) + else: + net.snapshot_received.connect(_on_snapshot) + wait_label.visible = true + return # der erste Zustand kommt vom Host + elif not hotseat_decks.is_empty(): + game = Game.new_hotseat(hotseat_decks, hotseat_ai) + elif tutorial: + var r := Game.make_rng() + var opps := Campaign.opponents(0, r) + opps[0].perks = [] + game = Game.new_battle_with(app.profile.deck_cards(), opps, r, true) + elif stage >= 0: + var r := Game.make_rng() + game = Game.new_battle_with(app.profile.deck_cards(), Campaign.opponents(stage, r), r) + else: + game = Game.new_battle(app.profile.deck_cards(), n_opp) + _begin() + + +func _begin() -> void: + n_opp = game.players.size() - 1 + if is_online(): + perspective = game.players[online_seat] + else: + game.events.clear() + perspective = game.current() if game.current().is_human else game.humans[0] + build_hero_boxes() + if is_online() and net.is_host: + net.broadcast() + game.events.clear() + refresh() + + +func _build_static() -> void: + Style.panel(self, Rect2(10, 205, 320, 340)) + Style.label(self, "Verlauf", 14, Style.MUTED, Rect2(20, 209, 200, 20)) + log_box = RichTextLabel.new() + log_box.position = Vector2(18, 230) + log_box.size = Vector2(304, 308) + log_box.bbcode_enabled = true + log_box.scroll_following = true + log_box.add_theme_font_size_override("normal_font_size", 13) + log_box.mouse_filter = Control.MOUSE_FILTER_IGNORE + add_child(log_box) + if tutorial: + tutorial_panel = Style.panel(self, Rect2(10, 205, 320, 150), Style.PANEL, 8, Style.GOLD, 2) + tutorial_panel.mouse_filter = Control.MOUSE_FILTER_STOP + Style.label(self, "Anleitung", 14, Style.GOLD, Rect2(20, 209, 200, 20), "left", true) + tutorial_text = RichTextLabel.new() + tutorial_text.position = Vector2(20, 230) + tutorial_text.size = Vector2(300, 90) + tutorial_text.bbcode_enabled = false + tutorial_text.scroll_active = false + tutorial_text.add_theme_font_size_override("normal_font_size", 13) + tutorial_text.mouse_filter = Control.MOUSE_FILTER_IGNORE + add_child(tutorial_text) + b_tut_next = Style.button(self, "Weiter", Rect2(230, 318, 90, 30), tutorial_next) + b_tut_next.add_theme_font_size_override("font_size", 14) + log_box.position = Vector2(18, 365) + log_box.size = Vector2(304, 173) + b_giveup = Style.button(self, "Aufgeben", Rect2(10, 553, 150, 40), func(): confirm.visible = true) + Style.panel(self, Rect2(950, 205, 320, 380)) + preview_hint = Style.label(self, "Karte überfahren für Details", 14, Style.MUTED, Rect2(950, 345, 320, 24), "center") + Style.panel(self, Rect2(BattleLayout.OWN_X - 10, 240, 5 * 110 + 4 * 10 + 20, 160), Style.darker(Style.PANEL, 0.8), 10) + bar_panel = Style.panel(self, BattleLayout.BAR) + name_label = Style.label(self, "Du", 20, Style.TEXT, Rect2(349, 421, 120, 30), "left", true) + life_label = Style.label(self, "", 24, Style.RED, Rect2(470, 418, 100, 34), "left", true) + energy_label = Style.label(self, "", 24, Style.BLUE, Rect2(570, 418, 150, 34), "left", true) + deck_label = Style.label(self, "", 16, Style.MUTED, Rect2(780, 424, 150, 24), "right") + status_label = Style.label(self, "", 15, Style.MUTED, Rect2(349, 455, 400, 24)) + msg_label = Style.label(self, "", 16, Style.ORANGE, Rect2(600, 455, 331, 24), "right", true) + b_end = Style.button(self, "Zug beenden", Rect2(1005, 527, 210, 48), end_turn, Color("285a3c")) + wait_label = Style.label(self, "Warte auf den Host …", 22, Style.MUTED, Rect2(0, 300, 1280, 40), "center") + wait_label.visible = false + hero_layer = _layer() + tile_layer = _layer() + trap_layer = _layer() + hand_layer = _layer() + preview_holder = _layer() + zoom_layer = _layer() + fx_layer = _layer() + # Mulligan + mulligan_box = _overlay() + Style.panel(mulligan_box, Rect2(140, 250, 1000, 320), Style.PANEL, 10, Style.GOLD, 2) + Style.label(mulligan_box, "Hand tauschen?", 26, Style.TEXT, Rect2(140, 262, 1000, 40), "center", true) + Style.label(mulligan_box, "Klicke Karten an die du zurücklegen willst. Einmal pro Partie.", 15, Style.MUTED, Rect2(140, 300, 1000, 24), "center") + mulligan_layer = Control.new() + mulligan_layer.mouse_filter = Control.MOUSE_FILTER_IGNORE + mulligan_box.add_child(mulligan_layer) + b_keep = Style.button(mulligan_box, "Behalten", Rect2(430, 515, 200, 44), func(): do_mulligan(false), Color("285a3c")) + b_swap = Style.button(mulligan_box, "Tauschen", Rect2(650, 515, 200, 44), func(): do_mulligan(true)) + # Spielende + overlay = _overlay() + result_label = Style.label(overlay, "", 56, Style.GREEN, Rect2(0, 250, 1280, 80), "center", true) + reward_label = Style.label(overlay, "", 26, Style.GOLD, Rect2(0, 335, 1280, 40), "center") + notice_label = Style.label(overlay, "", 18, Style.GREEN, Rect2(0, 385, 1280, 80), "center") + Style.button(overlay, "Zurück zum Menü", Rect2(530, 480, 220, 50), leave, Color("285a3c")) + # Aufgeben bestätigen + confirm = _overlay() + Style.panel(confirm, Rect2(390, 300, 500, 180), Style.PANEL, 10, Style.MUTED, 2) + Style.label(confirm, "Wirklich aufgeben?", 26, Style.TEXT, Rect2(390, 320, 500, 40), "center", true) + Style.label(confirm, "Der Kampf endet ohne Münzen.", 16, Style.MUTED, Rect2(390, 365, 500, 24), "center") + Style.button(confirm, "Ja, aufgeben", Rect2(420, 410, 200, 46), leave, Color("5a2828")) + Style.button(confirm, "Weiterspielen", Rect2(660, 410, 200, 46), func(): confirm.visible = false) + # Übergabe zwischen Menschen (Hotseat) + handover = _overlay() + Style.panel(handover, Rect2(340, 280, 600, 220), Style.PANEL, 10, Style.GOLD, 2) + handover_label = Style.label(handover, "", 30, Style.TEXT, Rect2(340, 310, 600, 44), "center", true) + Style.label(handover, "Maus weitergeben, dann weiter. Die Hand des Vorgängers ist verdeckt.", 16, Style.MUTED, Rect2(340, 362, 600, 24), "center") + Style.button(handover, "Weiter", Rect2(540, 420, 200, 50), take_over, Color("285a3c")) + + +func _layer() -> Control: + var c := Control.new() + c.mouse_filter = Control.MOUSE_FILTER_IGNORE + add_child(c) + return c + + +func _overlay() -> Control: + var o := Control.new() + o.set_anchors_preset(Control.PRESET_FULL_RECT) + o.visible = false + var dark := ColorRect.new() + dark.color = Color(0, 0, 0, 0.67) + dark.set_anchors_preset(Control.PRESET_FULL_RECT) + dark.mouse_filter = Control.MOUSE_FILTER_STOP + o.add_child(dark) + add_child(o) + return o + + +func leave() -> void: + if is_online(): + net.leave() + if tutorial and not app.profile.tutorial_done: + app.profile.tutorial_done = true + app.save() + app.show_screen(MenuScreen.new()) + + +# --- Layout-Helfer ------------------------------------------------------------------ + +func others() -> Array: + var out := [] + var n := game.players.size() + var start := game.players.find(perspective) + for i in range(1, n): + out.append(game.players[(start + i) % n]) + return out + + +func compact() -> bool: + return BattleLayout.compact(others().size()) + + +func slot_rect(p: Game.Player, j: int) -> Rect2: + if p == perspective: + return BattleLayout.own_slot(j) + var os := others() + return BattleLayout.other_slot(os.size(), os.find(p), j) + + +func ref_key(ref: Dictionary) -> String: + return "c%d" % ref.uid if ref.kind == "creature" else "p%d" % ref.index + + +func target_center(ref: Dictionary) -> Vector2: + if ref.kind == "creature": + if tiles.has(ref.uid): + var t: CreatureView = tiles[ref.uid] + return t.slot + t.size / 2 + return Vector2(-1, -1) + var p: Game.Player = game.players[ref.index] + if p == perspective: + return BattleLayout.BAR.position + BattleLayout.BAR.size / 2 + if hero_panels.has(p): + var panel: Panel = hero_panels[p] + return panel.position + panel.size / 2 + return Vector2(-1, -1) + + +func build_hero_boxes() -> void: + Style.clear(hero_layer) + hero_panels = {} + hero_labels = {} + var os := others() + var c := compact() + for i in os.size(): + var o: Game.Player = os[i] + var box := BattleLayout.hero_box_rect(os.size(), i) + var panel := Style.panel(hero_layer, box) + panel.gui_input.connect(func(ev): + if ev is InputEventMouseButton and ev.pressed and ev.button_index == MOUSE_BUTTON_LEFT: + on_click("hero", o)) + if not o.perks.is_empty(): + panel.tooltip_text = "Merkmal: " + ", ".join(o.perks.map(func(k): return Game.PERKS[k])) + hero_panels[o] = panel + var labels := {} + var title: String = ("%s · %s" % [o.name, o.title]) if o.title != "" else o.name + if not o.perks.is_empty(): + title += " ★" + labels["name"] = Style.label(hero_layer, title, 14 if c else 18, Style.TEXT, + Rect2(box.position.x + 10, box.position.y + 6, box.size.x - (44 if c else 20), 26), "left", true) + labels["life"] = Style.label(hero_layer, "", 16 if c else 20, Style.RED, + Rect2(box.position.x + 10, box.position.y + (35 if c else 32), 120, 28), "left", true) + labels["stats"] = Style.label(hero_layer, "", 12 if c else 14, Style.MUTED, + Rect2(box.position.x + 90, box.position.y + 38, box.size.x - 100, 20), "right") + hero_labels[o] = labels + if c: + var b := Style.button(hero_layer, "Lupe", Rect2(box.end.x - 44, box.position.y + 5, 38, 22), func(): + zoom_player = o + refresh()) + b.add_theme_font_size_override("font_size", 11) + + +# --- Ablauf und Eingabe ------------------------------------------------------------------ + +func my_turn() -> bool: + return game != null and game.winner == "" and game.current() == perspective + + +func any_overlay() -> bool: + return confirm.visible or handover.visible or mulligan_box.visible or overlay.visible + + +func _input(event: InputEvent) -> void: + if game == null: + return + if event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_RIGHT: + cancel_all() + return + if not (event is InputEventKey and event.pressed and not event.echo): + return + match event.keycode: + KEY_ESCAPE: + if confirm.visible: + confirm.visible = false + elif selected != null or pending != null or zoom_player != null: + cancel_all() + elif not any_overlay(): + confirm.visible = true + KEY_SPACE: + if my_turn() and not any_overlay(): + end_turn() + KEY_ENTER, KEY_KP_ENTER: + if handover.visible: + take_over() + elif mulligan_box.visible: + do_mulligan(false) + elif overlay.visible: + leave() + elif tutorial and b_tut_next.visible: + tutorial_next() + _: + if event.keycode >= KEY_1 and event.keycode <= KEY_9 and my_turn() and not any_overlay(): + var idx: int = event.keycode - KEY_1 + if idx < perspective.hand.size(): + on_click("hand", perspective.hand[idx]) + + +func cancel_all() -> void: + if confirm.visible: + confirm.visible = false + cancel() + zoom_player = null + refresh() + + +func _process(delta: float) -> void: + if game == null: + return + msg_t = maxf(0.0, msg_t - delta) + if msg_t <= 0.0 and msg_label.text != "": + msg_label.text = "" + if preview_timer > 0.0: + preview_timer -= delta + if preview_timer <= 0.0: + show_preview(null, false) + if game.winner != "": + if not ended: + ended = true + _finish() + return + var cur := game.current() + if cur.is_human: + if cur != perspective and is_hotseat() and not handover.visible: + handover_label.text = "%s ist dran" % cur.name + handover.visible = true + hand_layer.visible = false + trap_layer.visible = false + elif cur == perspective and cur.turns == 1 and not cur.mulligan_done and not mulligan_box.visible and not handover.visible: + show_mulligan() + return + if is_client(): + return + ai_timer -= delta + if ai_timer > 0: + return + var action := AI.choose_action(game, cur) + AI.apply_action(game, cur, action) + ai_timer = ai_delay * (0.6 if action.type == "end" else 1.0) + after_action() + + +func _finish() -> void: + var won := game.winner == "human" + if counts_for_profile(): + reward = app.profile.record_battle(won, n_opp, app.profile.deck_cards(), stage, played_ids) + if tutorial: + app.profile.tutorial_done = true + app.save() + app.sfx.play("win" if won else "lose") + else: + var wp := game.winner_player + var mine: bool = wp != null and wp == perspective + app.sfx.play("win" if mine else "lose") + refresh() + + +func take_over() -> void: + handover.visible = false + hand_layer.visible = true + trap_layer.visible = true + perspective = game.current() + cancel() + zoom_player = null + build_hero_boxes() + refresh() + + +func say(m: String) -> void: + msg_t = 2.5 + msg_label.text = m + + +func cancel() -> void: + selected = null + pending = null + + +func play(card: Cards.Card, target) -> void: + if is_client(): + net.send_action({"type": "play", "hand": perspective.hand.find(card), "target": Net.ref_dict(target) if target != null else null}) + return + var err := game.play_card(perspective, card, target) + if err != "": + say(err) + + +func end_turn() -> void: + if not my_turn(): + return + cancel() + zoom_player = null + if is_client(): + net.send_action({"type": "end"}) + return + game.end_turn() + ai_timer = ai_delay + after_action() + + +func show_mulligan() -> void: + mulligan_selected = [] + mulligan_box.visible = true + Style.clear(mulligan_layer) + var hand: Array = perspective.hand + for i in hand.size(): + var r := BattleLayout.hand_rect(hand.size(), i) + var v := CardView.new(hand[i], r.size) + v.position = Vector2(r.position.x, 322) + var idx := i + v.clicked.connect(func(_view): toggle_mulligan(idx)) + mulligan_layer.add_child(v) + _mulligan_borders() + + +func toggle_mulligan(idx: int) -> void: + if idx in mulligan_selected: + mulligan_selected.erase(idx) + else: + mulligan_selected.append(idx) + _mulligan_borders() + + +func _mulligan_borders() -> void: + var views := mulligan_layer.get_children() + for i in views.size(): + views[i].border = Style.YELLOW if i in mulligan_selected else null + views[i].queue_redraw() + b_swap.text = "Tauschen (%d)" % mulligan_selected.size() if not mulligan_selected.is_empty() else "Tauschen" + + +func do_mulligan(swap: bool) -> void: + mulligan_box.visible = false + var idxs: Array = mulligan_selected.duplicate() if swap else [] + if is_client(): + net.send_action({"type": "mulligan", "hand": idxs}) + return + var cards := [] + for i in idxs: + cards.append(perspective.hand[i]) + game.mulligan(perspective, cards) + after_action() + + +func on_click(kind: String, obj) -> void: + var g := game + if not my_turn() or any_overlay(): + return + if pending != null: + var card = pending + pending = null + if obj in g.valid_targets(perspective, card.target_type()): + play(card, obj) + else: + say("Abgebrochen") + zoom_player = null + after_action() + return + if selected != null: + var cr = selected + selected = null + if kind == "enemy" or kind == "hero": + if is_client(): + net.send_action({"type": "attack", "uid": cr.uid, "target": Net.ref_dict(obj)}) + else: + var err := g.attack(cr, obj) + if err != "": + say(err) + zoom_player = null + after_action() + return + match kind: + "hand": + var ok := g.can_play(perspective, obj) + if not ok[0]: + say(ok[1]) + elif obj.target_type() != "" and not g.valid_targets(perspective, obj.target_type()).is_empty(): + pending = obj + say("Wähle ein Ziel") + else: + play(obj, null) + "own": + if obj.can_attack(): + selected = obj + say("Wähle ein Angriffsziel") + else: + say("%s kann nicht angreifen" % obj.name) + after_action() + + +func on_tile_click(cr: Game.Creature) -> void: + var o = cr.owner() + if o == null: + return + if o == perspective: + on_click("own", cr) + elif o.alive(): + on_click("enemy", cr) + + +func show_preview(card, entered: bool) -> void: + Style.clear(preview_holder) + if entered and card != null: + var v := CardView.new(card, Vector2(210, 294)) + v.position = Vector2(1005, 215) + v.mouse_filter = Control.MOUSE_FILTER_IGNORE + preview_holder.add_child(v) + preview_hint.visible = not (entered and card != null) + + +## Vorschau einer Handkarte mit Hinweisen auf Resonanz und Feldkombos mit dem eigenen Feld. +func show_hand_preview(card: Cards.Card, entered: bool) -> void: + Style.clear(preview_holder) + preview_hint.visible = not entered + if not entered: + return + var hints: Array[String] = combo_hints(card) + var v := CardView.new(card, Vector2(190, 266) if not hints.is_empty() else Vector2(210, 294)) + v.position = Vector2(1015, 212) if not hints.is_empty() else Vector2(1005, 215) + v.mouse_filter = Control.MOUSE_FILTER_IGNORE + preview_holder.add_child(v) + if not hints.is_empty(): + var box := RichTextLabel.new() + box.position = Vector2(958, 480) + box.size = Vector2(304, 46) + box.bbcode_enabled = true + box.scroll_active = false + box.fit_content = false + box.mouse_filter = Control.MOUSE_FILTER_IGNORE + box.add_theme_font_size_override("normal_font_size", 11) + box.add_theme_color_override("default_color", Style.GOLD) + box.text = "[center]" + "\n".join(hints.slice(0, 2)) + "[/center]" + preview_holder.add_child(box) + + +func combo_hints(card: Cards.Card) -> Array[String]: + var out: Array[String] = [] + if not card.is_creature(): + return out + var partners: Array[String] = [] + var combos := {} + for other in perspective.board: + if other.card.elements.any(func(e): return e in card.elements): + partners.append(other.name) + for e1 in card.elements: + for e2 in other.card.elements: + if e1 != e2: + var name := Cards.combo_name([e1, e2]) + if not combos.has(name): + combos[name] = other.name + if not partners.is_empty(): + out.append("Resonanz +%d mit %s" % [mini(partners.size(), Game.RESONANCE_MAX), ", ".join(partners)]) + for name in combos: + out.append("Feldkombo %s mit %s: %s" % [name, combos[name], Cards.FIELD_COMBO_TEXT[name]]) + return out + + +# --- Netzwerk ------------------------------------------------------------------------------- + +func _on_snapshot(snap: Dictionary) -> void: + var first := game == null + game = Game.from_snapshot(snap) + wait_label.visible = false + if first: + _begin() + return + perspective = game.players[online_seat] + build_hero_boxes() + after_action() + + +func _on_net_ended(reason: String) -> void: + if game == null or game.winner == "": + say(reason) + await get_tree().create_timer(1.5).timeout + if is_inside_tree(): + app.show_screen(MenuScreen.new()) + + +# --- Ereignisse ---------------------------------------------------------------------------- + +## Nach jeder Aktion: Ereignisse sichern, Ansicht angleichen, Animationen abspielen. +func after_action() -> void: + if is_online() and net.is_host: + net.broadcast() + var evs := game.events.duplicate() + game.events.clear() + if counts_for_profile(): + _note_events(evs) + var centers := {} + for ev in evs: + for key in ["target", "attacker", "source"]: + if ev.has(key): + centers[ref_key(ev[key])] = target_center(ev[key]) + refresh() + fx.play_events(evs, centers) + + +func _note_events(evs: Array) -> void: + var hi := game.players.find(game.human) + for ev in evs: + if ev.get("player", -1) != hi: + continue + match ev.type: + "play", "spell": + played_ids.append(ev.card.id) + if ev.type == "play": + app.profile.daily_event("creature_played") + "trap_set": + app.profile.daily_event("trap_set") + "combo": + app.profile.daily_event("combo") + + +# --- Anleitung ------------------------------------------------------------------------------ + +func tutorial_condition(kind: String) -> bool: + var h := game.human + match kind: + "played_creature": + return game.log.any(func(l): return l.begins_with("Du spielt")) and h.board.size() > 0 + "turn_passed": + return h.turns >= 2 + "attacked": + return game.log.any(func(l): return l.ends_with("greift Fenn an.") or (" greift " in l and l.begins_with(h.board[0].name) if not h.board.is_empty() else false)) + "resonance": + return h.board.any(func(c): return c.resonance > 0) + "combo": + return game.log.any(func(l): return l.begins_with("Feldkombo")) + "spell": + return game.log.any(func(l): return l == "Du spielt Funke." or l == "Du spielt Feuerball." or l == "Du spielt Verhärten.") + return false + + +func tutorial_next() -> void: + if tutorial_step < TUTORIAL_STEPS.size() - 1: + tutorial_step += 1 + app.sfx.play("click") + refresh() + + +func _tutorial_refresh() -> void: + while tutorial_step < TUTORIAL_STEPS.size() - 1 and tutorial_condition(TUTORIAL_STEPS[tutorial_step][1]): + tutorial_step += 1 + tutorial_text.text = "%d/%d %s" % [tutorial_step + 1, TUTORIAL_STEPS.size(), TUTORIAL_STEPS[tutorial_step][0]] + b_tut_next.visible = tutorial_step < TUTORIAL_STEPS.size() - 1 + + +# --- Ansicht angleichen -------------------------------------------------------------------- + +func refresh() -> void: + if game == null: + return + var g := game + var h := perspective + var now := Time.get_ticks_msec() + var mine := my_turn() + var valid: Array = g.valid_targets(h, pending.target_type()) if pending != null else [] + hand_views = [] + own_views = [] + enemy_views = [] + trap_views = [] + + for o in others(): + var panel: Panel = hero_panels[o] + var bcol = null + var bw := 0 + if g.current() == o: + bcol = Style.BLUE + bw = 3 + if o in valid or (selected != null and o.alive() and g.can_attack(selected, o)[0]): + bcol = Style.ORANGE + bw = 3 + if int(flash_until.get(g.players.find(o), 0)) > now: + bcol = Style.RED + bw = 4 + panel.add_theme_stylebox_override("panel", Style.box(Style.PANEL if o.alive() else Style.darker(Style.PANEL, 0.6), 8, bcol, bw)) + panel.mouse_filter = Control.MOUSE_FILTER_STOP if o.alive() else Control.MOUSE_FILTER_IGNORE + var labels: Dictionary = hero_labels[o] + labels.name.add_theme_color_override("font_color", Style.TEXT if o.alive() else Style.MUTED) + if o.alive(): + labels.life.text = "♥ %d" % maxi(o.life, 0) + var traps_txt := (" F %d" if compact() else " Fallen %d") % o.traps.size() if not o.traps.is_empty() else "" + labels.stats.text = ("H %d D %d%s ◆ %d" if compact() else "Hand %d Deck %d%s ◆ %d") % [o.hand.size(), o.deck.size(), traps_txt, o.max_energy] + else: + labels.life.text = "besiegt" + labels.life.add_theme_color_override("font_color", Style.MUTED) + labels.stats.text = "" + + var seen := {} + for p in g.players: + for j in p.board.size(): + var cr: Game.Creature = p.board[j] + var rect := slot_rect(p, j) + seen[cr.uid] = true + var tile: CreatureView + if tiles.has(cr.uid): + tile = tiles[cr.uid] + tile.creature = cr + if tile.size != rect.size: + tile.size = rect.size + tile.custom_minimum_size = rect.size + tile.pivot_offset = rect.size / 2 + else: + tile = CreatureView.new(cr, rect.size) + tile.position = rect.position + tile.slot = rect.position + tiles[cr.uid] = tile + tile_layer.add_child(tile) + tile.hover.connect(show_preview) + var uid := cr.uid + tile.clicked.connect(func(_v): + var c := game.find_creature(uid) + if c != null: + on_tile_click(c)) + fx.pop_in(tile) + tile.slot = rect.position + if not tile.busy and tile.position != rect.position: + fx.move_to(tile, rect.position) + var b = null + var w := 2 + if cr == selected: + b = Style.YELLOW + w = 4 + elif cr in valid or (selected != null and g.can_attack(selected, cr)[0]): + b = Style.ORANGE + w = 3 + elif p == h and mine and cr.can_attack(): + b = Style.GREEN + w = 3 + tile.border = b + tile.width = w + tile.queue_redraw() + if p == h: + own_views.append(tile) + else: + enemy_views.append(tile) + for uid in tiles.keys(): + if not seen.has(uid): + var t: CreatureView = tiles[uid] + tiles.erase(uid) + fx.fade_out(t) + + Style.clear(trap_layer) + if not h.traps.is_empty(): + Style.label(trap_layer, "Fallen", 13, Style.MUTED, Rect2(335, 492, 60, 20)) + for i in h.traps.size(): + var tv := CardView.new(h.traps[i], BattleLayout.trap_rect(i).size) + tv.position = BattleLayout.trap_rect(i).position + tv.hover.connect(show_preview) + trap_layer.add_child(tv) + trap_views.append(tv) + + Style.clear(hand_layer) + for i in h.hand.size(): + var card: Cards.Card = h.hand[i] + var playable: bool = mine and g.can_play(h, card)[0] + var r := BattleLayout.hand_rect(h.hand.size(), i) + var v := CardView.new(card, r.size) + v.position = r.position + if card == pending: + v.border = Style.YELLOW + elif playable: + v.border = Style.GREEN + v.dim = not playable + v.hover.connect(show_hand_preview) + v.clicked.connect(func(_view): on_click("hand", card)) + hand_layer.add_child(v) + hand_views.append(v) + + var bar_border = Style.BLUE if mine else null + if int(flash_until.get(g.players.find(h), 0)) > now: + bar_border = Style.RED + bar_panel.add_theme_stylebox_override("panel", Style.box(Style.PANEL, 8, bar_border, 3 if bar_border != null else 0)) + name_label.text = h.name + life_label.text = "♥ %d" % maxi(h.life, 0) + energy_label.text = "◆ %d/%d" % [h.energy, h.max_energy] + deck_label.text = "Deck %d" % h.deck.size() + status_label.text = "Zug %d · %s" % [g.turn, "Du bist dran" if mine else g.current().name + " ist dran …"] + b_end.disabled = not mine + var lines: Array[String] = [] + var start := maxi(0, g.log.size() - 60) + for i in range(start, g.log.size()): + var line := g.log[i] + if line.begins_with("---"): + lines.append("[color=#6eaaf0]%s[/color]" % line) + elif line.begins_with("Feldkombo") or line.begins_with("Falle von"): + lines.append("[color=#f5c850]%s[/color]" % line) + else: + lines.append(line) + log_box.text = "\n".join(lines) + if tutorial: + _tutorial_refresh() + + Style.clear(zoom_layer) + if zoom_player != null and zoom_player.alive(): + build_zoom(valid) + + if g.winner != "": + var wp := g.winner_player + if counts_for_profile(): + var won := g.winner == "human" + result_label.text = "Sieg!" if won else "Niederlage" + result_label.add_theme_color_override("font_color", Style.GREEN if won else Style.RED) + reward_label.text = "+%d Münzen" % maxi(reward, 0) + var notes: Array[String] = app.profile.take_notices() + if not notes.is_empty(): + notice_label.text = "\n".join(notes) + else: + var mine_win: bool = wp != null and wp == perspective + result_label.text = ("%s gewinnt!" % wp.name) if wp != null and wp.is_human else "Die KI gewinnt" + result_label.add_theme_color_override("font_color", Style.GREEN if mine_win else Style.RED) + reward_label.text = "Gemeinsame Partie, keine Münzen" + overlay.visible = true + confirm.visible = false + handover.visible = false + mulligan_box.visible = false + + +func build_zoom(valid: Array) -> void: + var o: Game.Player = zoom_player + var g := game + var box := Rect2(190, 190, 900, 300) + var back := Style.panel(zoom_layer, box, Style.PANEL, 10, Style.GOLD, 2) + back.mouse_filter = Control.MOUSE_FILTER_STOP + Style.label(zoom_layer, "%s · %s ♥ %d Hand %d Deck %d Fallen %d ◆ %d" % [o.name, o.title, o.life, o.hand.size(), o.deck.size(), o.traps.size(), o.max_energy], + 18, Style.TEXT, Rect2(box.position.x + 20, box.position.y + 12, 800, 30), "left", true) + for j in o.board.size(): + var cr: Game.Creature = o.board[j] + var b = null + if cr in valid or (selected != null and g.can_attack(selected, cr)[0]): + b = Style.ORANGE + var v := CreatureView.new(cr, Vector2(110, 140), b, 3 if b != null else 2) + v.position = Vector2(box.position.x + 20 + j * 122, box.position.y + 56) + v.hover.connect(show_preview) + v.clicked.connect(func(_x): on_tile_click(cr)) + zoom_layer.add_child(v) + if o.board.is_empty(): + Style.label(zoom_layer, "Keine Wesen auf dem Feld", 16, Style.MUTED, Rect2(box.position.x + 20, box.position.y + 110, 600, 30)) + var hero_ok: bool = (o in valid) or (selected != null and g.can_attack(selected, o)[0]) + var bh := Style.button(zoom_layer, "Held als Ziel", Rect2(box.position.x + 20, box.end.y - 60, 180, 44), func(): on_click("hero", o), Color("5a3c28")) + bh.disabled = not hero_ok + Style.button(zoom_layer, "Schließen", Rect2(box.end.x - 180, box.end.y - 60, 160, 44), func(): + zoom_player = null + refresh()) diff --git a/scripts/ui/battle_screen.gd.uid b/scripts/ui/battle_screen.gd.uid new file mode 100644 index 0000000..66b8101 --- /dev/null +++ b/scripts/ui/battle_screen.gd.uid @@ -0,0 +1 @@ +uid://bmf82cuhs7h1a diff --git a/scripts/ui/booster_screen.gd b/scripts/ui/booster_screen.gd new file mode 100644 index 0000000..4f50f69 --- /dev/null +++ b/scripts/ui/booster_screen.gd @@ -0,0 +1,122 @@ +class_name BoosterScreen +extends Control + +const CARD_W := 200 +const CARD_H := 280 + +var app +var cards: Array = [] +var revealed := {} +var new_ids := {} +var coins_label: Label +var msg_label: Label +var b_buy: Button +var b_all: Button +var slots: Control + + +class CardBack extends Control: + signal clicked + + func _init(sz: Vector2) -> void: + size = sz + custom_minimum_size = sz + mouse_filter = Control.MOUSE_FILTER_STOP + + func _gui_input(event: InputEvent) -> void: + if event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_LEFT: + accept_event() + clicked.emit() + + func _draw() -> void: + var rect := Rect2(Vector2.ZERO, size) + draw_style_box(Style.box(Color("3c285a"), 8, Style.GOLD, 3), rect) + Style.border(self, rect.grow(-15), Color("5a3c82"), 2, 6) + Style.text(self, "?", 48, Style.GOLD, size / 2, "center", true) + + +func slot_rect(i: int) -> Rect2: + var gap := 20 + var x0 := (1280 - 5 * CARD_W - 4 * gap) / 2 + return Rect2(x0 + i * (CARD_W + gap), 230, CARD_W, CARD_H) + + +func _ready() -> void: + Style.label(self, "Booster", 36, Style.GOLD, Rect2(0, 20, 1280, 50), "center", true) + coins_label = Style.label(self, "", 22, Style.GOLD, Rect2(0, 78, 1280, 30), "center") + Style.label(self, "5 Karten pro Booster, mindestens eine seltene. Klicke auf eine Karte zum Aufdecken.", + 16, Style.MUTED, Rect2(0, 115, 1280, 24), "center") + slots = Control.new() + slots.mouse_filter = Control.MOUSE_FILTER_IGNORE + add_child(slots) + msg_label = Style.label(self, "", 18, Style.RED, Rect2(0, 610, 1280, 30), "center") + b_buy = Style.button(self, "Booster kaufen (%d Münzen)" % Profile.BOOSTER_COST, Rect2(360, 720, 260, 48), buy, Color("5a4628")) + b_all = Style.button(self, "Alle aufdecken", Rect2(640, 720, 140, 48), reveal_all) + Style.button(self, "Zurück", Rect2(800, 720, 120, 48), func(): app.show_screen(MenuScreen.new())) + refresh() + + +func _input(event: InputEvent) -> void: + if event is InputEventKey and event.pressed and event.keycode == KEY_ESCAPE: + app.show_screen(MenuScreen.new()) + + +func buy() -> void: + var p: Profile = app.profile + var before: Dictionary = p.collection.duplicate() + var got: Array = p.open_booster() + if got.is_empty(): + msg_label.text = "Nicht genug Münzen" + msg_label.add_theme_color_override("font_color", Style.RED) + return + app.save() + app.sfx.play("play") + cards = got + revealed = {} + new_ids = {} + for c in cards: + if before.get(c.id, 0) == 0: + new_ids[c.id] = true + var notes: Array[String] = p.take_notices() + msg_label.text = " · ".join(notes) + msg_label.add_theme_color_override("font_color", Style.GREEN) + refresh() + + +func reveal(i: int) -> void: + revealed[i] = true + app.sfx.play("click") + refresh() + + +func reveal_all() -> void: + for i in 5: + revealed[i] = true + refresh() + + +func refresh() -> void: + var p: Profile = app.profile + coins_label.text = "Münzen: %d" % p.coins + b_buy.disabled = p.coins < Profile.BOOSTER_COST + b_all.disabled = cards.is_empty() or revealed.size() >= 5 + Style.clear(slots) + for i in 5: + var r := slot_rect(i) + if cards.is_empty(): + Style.panel(slots, r, Style.PANEL, 8, Style.PANEL_LIGHT, 2) + elif revealed.has(i): + var c: Cards.Card = cards[i] + var v := CardView.new(c, r.size) + v.position = r.position + slots.add_child(v) + Style.label(slots, c.rarity, 16, Cards.RARITY_COLORS[c.rarity], Rect2(r.position.x, r.end.y + 8, r.size.x, 24), "center", true) + if new_ids.has(c.id): + Style.label(slots, "Neu!", 16, Style.GREEN, Rect2(r.position.x, r.end.y + 32, r.size.x, 24), "center", true) + else: + Style.label(slots, "jetzt %dx" % p.collection[c.id], 14, Style.MUTED, Rect2(r.position.x, r.end.y + 32, r.size.x, 24), "center") + else: + var back := CardBack.new(r.size) + back.position = r.position + back.clicked.connect(reveal.bind(i)) + slots.add_child(back) diff --git a/scripts/ui/booster_screen.gd.uid b/scripts/ui/booster_screen.gd.uid new file mode 100644 index 0000000..aae5d28 --- /dev/null +++ b/scripts/ui/booster_screen.gd.uid @@ -0,0 +1 @@ +uid://d3irimwei0s4d diff --git a/scripts/ui/campaign_screen.gd b/scripts/ui/campaign_screen.gd new file mode 100644 index 0000000..5c406d7 --- /dev/null +++ b/scripts/ui/campaign_screen.gd @@ -0,0 +1,59 @@ +class_name CampaignScreen +extends Control + +var app + + +func _ready() -> void: + var p: Profile = app.profile + var col := Style.column(self, 1000, 24, 6) + Style.clabel(col, "Kampagne", 36, Style.GOLD, "center", true) + Style.clabel(col, "Zehn Magier warten. Jede Stufe bringt mehr Gegner an den Tisch, alle nach denselben Regeln.", 16, Style.MUTED) + Style.spacer(col, 6) + for i in Campaign.STAGES.size(): + var st: Dictionary = Campaign.STAGES[i] + var done := i < p.campaign_stage + var next := i == p.campaign_stage + var panel := PanelContainer.new() + panel.add_theme_stylebox_override("panel", Style.box(Style.PANEL if not done else Style.darker(Style.PANEL, 0.8), 6, + Style.GOLD if next else null, 2 if next else 0)) + col.add_child(panel) + var r := Style.row(panel, 12) + r.custom_minimum_size = Vector2(0, 50) + Style.clabel(r, str(i + 1), 20, Style.GOLD if next else Style.MUTED, "center", true, 40) + Style.clabel(r, "%s · %s" % [st.name, st.title], 17, Style.TEXT if not done else Style.MUTED, "left", true, 300) + var dots := Control.new() + dots.custom_minimum_size = Vector2(60, 0) + dots.mouse_filter = Control.MOUSE_FILTER_IGNORE + var elems: Array = st.elements + dots.draw.connect(func(): + for k in elems.size(): + dots.draw_circle(Vector2(10 + k * 18, dots.size.y / 2), 7, Cards.ELEMENT_COLORS[elems[k]])) + r.add_child(dots) + var table: String = "Duell" if st.extra == 0 else "%d am Tisch" % (st.extra + 2) + Style.clabel(r, "%s · %d Münzen\n★ %s" % [table, st.reward, Game.PERKS[st.perk]], 13, Style.MUTED, "left", false, 300) + if done: + Style.clabel(r, "abgeschlossen", 14, Style.GREEN, "right", false, 110) + Style.cbutton(r, "Wiederholen", Vector2(140, 38), _start.bind(i)) + elif next: + Style.clabel(r, "", 14, Style.GREEN, "right", false, 110) + Style.cbutton(r, "Kämpfen", Vector2(140, 38), _start.bind(i), Color("285a3c")) + else: + Style.clabel(r, "", 14, Style.GREEN, "right", false, 110) + var b := Style.cbutton(r, "Gesperrt", Vector2(140, 38), func(): pass) + b.disabled = true + if p.campaign_stage >= Campaign.STAGES.size(): + Style.clabel(col, "Kampagne abgeschlossen. Der Archimagier ist besiegt!", 18, Style.GREEN, "center", true) + Style.spacer(col, 4) + var br := Style.row(col) + br.alignment = BoxContainer.ALIGNMENT_CENTER + Style.cbutton(br, "Zurück", Vector2(160, 44), func(): app.show_screen(MenuScreen.new())) + + +func _start(stage: int) -> void: + app.show_screen(BattleScreen.new(0, stage)) + + +func _input(event: InputEvent) -> void: + if event is InputEventKey and event.pressed and event.keycode == KEY_ESCAPE: + app.show_screen(MenuScreen.new()) diff --git a/scripts/ui/campaign_screen.gd.uid b/scripts/ui/campaign_screen.gd.uid new file mode 100644 index 0000000..0b3690d --- /dev/null +++ b/scripts/ui/campaign_screen.gd.uid @@ -0,0 +1 @@ +uid://bk50mk881o2hr diff --git a/scripts/ui/card_grid.gd b/scripts/ui/card_grid.gd new file mode 100644 index 0000000..690c1dd --- /dev/null +++ b/scripts/ui/card_grid.gd @@ -0,0 +1,50 @@ +class_name CardGrid +extends ScrollContainer +## Scrollbares Kartenraster mit Beschriftung unter jeder Karte. + +signal card_clicked(card: Cards.Card) +signal card_hover(card: Cards.Card, entered: bool) + +const COLS := 7 +const CW := 100 +const CH := 140 +const GAP := 12 + +var grid: GridContainer + + +func _init(rect: Rect2) -> void: + position = rect.position + size = rect.size + horizontal_scroll_mode = ScrollContainer.SCROLL_MODE_DISABLED + grid = GridContainer.new() + grid.columns = COLS + grid.add_theme_constant_override("h_separation", GAP) + grid.add_theme_constant_override("v_separation", GAP) + add_child(grid) + + +## cards: Karten; label_fn(card) -> String; dim_fn(card) -> bool +func fill(cards: Array, label_fn: Callable, dim_fn: Callable) -> void: + Style.clear(grid) + for c in cards: + var cell := Control.new() + cell.custom_minimum_size = Vector2(CW, CH + 16) + cell.mouse_filter = Control.MOUSE_FILTER_IGNORE + var v := CardView.new(c, Vector2(CW, CH)) + v.dim = dim_fn.call(c) + v.clicked.connect(func(_view): card_clicked.emit(c)) + v.hover.connect(func(card, entered): card_hover.emit(card, entered)) + cell.add_child(v) + var text: String = label_fn.call(c) + Style.label(cell, text, 12, Style.MUTED if v.dim else Style.TEXT, Rect2(0, CH + 1, CW, 16), "center") + grid.add_child(cell) + + +func views() -> Array: + var out := [] + for cell in grid.get_children(): + for v in cell.get_children(): + if v is CardView: + out.append(v) + return out diff --git a/scripts/ui/card_grid.gd.uid b/scripts/ui/card_grid.gd.uid new file mode 100644 index 0000000..9a0c7ec --- /dev/null +++ b/scripts/ui/card_grid.gd.uid @@ -0,0 +1 @@ +uid://bil3i64hn7rfd diff --git a/scripts/ui/card_view.gd b/scripts/ui/card_view.gd new file mode 100644 index 0000000..37fb056 --- /dev/null +++ b/scripts/ui/card_view.gd @@ -0,0 +1,65 @@ +class_name CardView +extends Control +## Zeichnet eine Karte (Hand, Sammlung, Booster, Vorschau). + +signal clicked(view: CardView) +signal hover(card: Cards.Card, entered: bool) + +var card: Cards.Card +var border = null # Color oder null (dann Seltenheitsfarbe) +var dim := false + + +func _init(c: Cards.Card, sz: Vector2) -> void: + card = c + custom_minimum_size = sz + size = sz + mouse_filter = Control.MOUSE_FILTER_STOP + mouse_entered.connect(func(): hover.emit(card, true)) + mouse_exited.connect(func(): hover.emit(card, false)) + + +func _gui_input(event: InputEvent) -> void: + if event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_LEFT: + accept_event() + clicked.emit(self) + + +func _draw() -> void: + var rect := Rect2(Vector2.ZERO, size) + var big := size.x >= 180 + var mid := size.x >= 115 + var f_name := 18 if big else (14 if mid else 12) + var f_text := 14 if big else (11 if mid else 10) + var f_stat := 24 if big else (18 if mid else 15) + Style.fill_elements(self, rect, card.elements, 8) + var bcol: Color = border if border != null else Cards.RARITY_COLORS[card.rarity] + Style.border(self, rect, bcol, 3 if big else 2, 8) + # Kosten + var r := 16 if big else 12 + var cc := Vector2(r + 4, r + 4) + draw_circle(cc, r, Color("14141c")) + Style.text(self, str(card.cost), f_stat, Style.GOLD, cc, "center", true) + # Name und Kombo + var nm := Style.fit(card.name, true, f_name, size.x - 2 * r - 12) + Style.text(self, nm, f_name, Style.TEXT, Vector2(size.x / 2 + r / 2.0, 4), "midtop", true) + if mid: + var sub: String = (card.combo() + " · " + card.kind) if card.is_combo() else card.kind + Style.text(self, sub, f_text, Color("e6e6e6"), Vector2(size.x / 2, 2 * r + 4), "midtop") + # Bild + var band_top: float = 2 * r + 4 + (f_text + 6 if mid else 0) + var band_bottom: float = size.y * 0.42 - 4 + if band_bottom - band_top > 14: + var gsize: float = minf(band_bottom - band_top, size.x * 0.42) + Style.glyph(self, card, Vector2(size.x / 2, (band_top + band_bottom) / 2), gsize) + # Textfeld + var box := Rect2(6, size.y * 0.42, size.x - 12, size.y * 0.42) + draw_rect(box, Color(0.06, 0.06, 0.09, 0.67)) + draw_multiline_string(Style.FONT, Vector2(box.position.x + 4, box.position.y + 4 + Style.FONT.get_ascent(f_text)), + card.text(), HORIZONTAL_ALIGNMENT_LEFT, box.size.x - 8, f_text, 6 if big else 4, Style.TEXT) + # Werte + if card.is_creature(): + Style.text(self, str(card.attack), f_stat, Style.YELLOW, Vector2(10, size.y - 6), "bottomleft", true) + Style.text(self, str(card.health), f_stat, Style.RED, Vector2(size.x - 10, size.y - 6), "bottomright", true) + if dim: + draw_rect(rect, Color(0, 0, 0, 0.47)) diff --git a/scripts/ui/card_view.gd.uid b/scripts/ui/card_view.gd.uid new file mode 100644 index 0000000..5126bf1 --- /dev/null +++ b/scripts/ui/card_view.gd.uid @@ -0,0 +1 @@ +uid://oom648upeavd diff --git a/scripts/ui/creature_view.gd b/scripts/ui/creature_view.gd new file mode 100644 index 0000000..38895aa --- /dev/null +++ b/scripts/ui/creature_view.gd @@ -0,0 +1,92 @@ +class_name CreatureView +extends Control +## Zeichnet ein Wesen auf dem Feld. Bleibt über Zustandsänderungen bestehen (für Animationen). + +signal clicked(view: CreatureView) +signal hover(card: Cards.Card, entered: bool) + +var creature: Game.Creature +var border = null +var width := 2 +var flash := false # kurz rot: wurde gerade angegriffen +var slot: Vector2 # Zielposition im Raster +var busy := false # wird gerade animiert (kein Neupositionieren) + + +func _init(cr: Game.Creature, sz: Vector2, b = null, w: int = 2) -> void: + creature = cr + border = b + width = w + custom_minimum_size = sz + size = sz + pivot_offset = sz / 2 + mouse_filter = Control.MOUSE_FILTER_STOP + mouse_entered.connect(func(): hover.emit(creature.card, true)) + mouse_exited.connect(func(): hover.emit(creature.card, false)) + + +func _gui_input(event: InputEvent) -> void: + if event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_LEFT: + accept_event() + clicked.emit(self) + + +func _draw() -> void: + var rect := Rect2(Vector2.ZERO, size) + var small := size.x < 100 + var mini := size.x < 60 + Style.fill_elements(self, rect, creature.card.elements, 6) + var bcol: Color = border if border != null else Cards.RARITY_COLORS[creature.card.rarity] + if flash: + bcol = Style.RED + Style.border(self, rect, bcol, 4 if flash else width, 6) + if mini: + _draw_mini() + return + var fs := 11 if small else 13 + var nm := Style.fit(creature.name, true, fs, size.x - 6) + Style.text(self, nm, fs, Style.TEXT, Vector2(size.x / 2, 4), "midtop", true) + var badges: Array[String] = [] + if creature.taunt(): + badges.append("Wächter") + if creature.shield: + badges.append("Schild") + if creature.attacks_per_turn() == 2: + badges.append("x2") + if creature.frozen: + badges.append("Eis") + if creature.resonance > 0: + badges.append("Resonanz") + var y := 18.0 if small else 22.0 + for b in badges: + Style.text(self, b, 10 if small else 12, Color("ebebf5"), Vector2(size.x / 2, y), "midtop") + y += 12 if small else 15 + var f := 16 if small else 20 + var atk_col := Style.GREEN if creature.resonance > 0 else Style.YELLOW + Style.text(self, str(creature.power()), f, atk_col, Vector2(6, size.y - 4), "bottomleft", true) + var hp_col := Style.RED if creature.health < creature.max_health else Color("ffc8c8") + Style.text(self, str(creature.health), f, hp_col, Vector2(size.x - 6, size.y - 4), "bottomright", true) + if creature.frozen: + draw_rect(rect, Color(0.55, 0.78, 1.0, 0.35)) + + +## Sehr kleine Kacheln (4 oder 5 Gegner): nur Kürzel und Werte, Details per Vorschau oder Lupe. +func _draw_mini() -> void: + var letters: Array[String] = [] + if creature.taunt(): + letters.append("W") + if creature.shield: + letters.append("S") + if creature.attacks_per_turn() == 2: + letters.append("2") + if creature.frozen: + letters.append("E") + if creature.resonance > 0: + letters.append("R") + Style.text(self, " ".join(letters), 10, Color("ebebf5"), Vector2(size.x / 2, 3), "midtop", true) + var atk_col := Style.GREEN if creature.resonance > 0 else Style.YELLOW + Style.text(self, str(creature.power()), 13, atk_col, Vector2(4, size.y - 2), "bottomleft", true) + var hp_col := Style.RED if creature.health < creature.max_health else Color("ffc8c8") + Style.text(self, str(creature.health), 13, hp_col, Vector2(size.x - 4, size.y - 2), "bottomright", true) + if creature.frozen: + draw_rect(Rect2(Vector2.ZERO, size), Color(0.55, 0.78, 1.0, 0.35)) diff --git a/scripts/ui/creature_view.gd.uid b/scripts/ui/creature_view.gd.uid new file mode 100644 index 0000000..c13b242 --- /dev/null +++ b/scripts/ui/creature_view.gd.uid @@ -0,0 +1 @@ +uid://bcnj0sdt2jbjb diff --git a/scripts/ui/deck_screen.gd b/scripts/ui/deck_screen.gd new file mode 100644 index 0000000..1117a29 --- /dev/null +++ b/scripts/ui/deck_screen.gd @@ -0,0 +1,351 @@ +class_name DeckScreen +extends Control +## Deckbau mit fünf Slots, Suche, Sortierung und fehlenden Karten. + +const SORTS := ["Kosten", "Name", "Element", "Seltenheit"] + +var app +var slot := 0 +var deck: Array = [] +var filter := "" +var search := "" +var sort_mode := 0 +var show_missing := false +var msg_label: Label +var grid: CardGrid +var deck_list: Control +var deck_label: Label +var elems_label: Label +var valid_label: Label +var active_label: Label +var curve: Control +var preview: CardView +var search_box: LineEdit +var sort_box: OptionButton +var missing_box: CheckButton +var slot_buttons: Array = [] +var b_activate: Button +var b_autofill: Button +var name_box: LineEdit + + +class DeckRow extends Control: + signal clicked(card) + signal hover(card, entered: bool) + var card: Cards.Card + var count: int + var lit := false + + func _init(c: Cards.Card, n: int, sz: Vector2) -> void: + card = c + count = n + size = sz + custom_minimum_size = sz + mouse_filter = Control.MOUSE_FILTER_STOP + mouse_entered.connect(func(): + lit = true + queue_redraw() + hover.emit(card, true)) + mouse_exited.connect(func(): + lit = false + queue_redraw() + hover.emit(card, false)) + + func _gui_input(event: InputEvent) -> void: + if event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_LEFT: + accept_event() + clicked.emit(card) + + func _draw() -> void: + if lit: + draw_style_box(Style.box(Style.PANEL_LIGHT, 4), Rect2(Vector2.ZERO, size)) + for k in card.elements.size(): + draw_circle(Vector2(10 + k * 12, size.y / 2), 7, Cards.ELEMENT_COLORS[card.elements[k]]) + Style.text(self, "%dx %s" % [count, card.name], 15, Style.TEXT, Vector2(40, size.y / 2), "midleft") + Style.text(self, str(card.cost), 15, Style.GOLD, Vector2(size.x - 10, size.y / 2), "midright", true) + + +class EnergyCurve extends Control: + var cards: Array = [] + + func _draw() -> void: + Style.text(self, "Energiekurve", 12, Style.MUTED, Vector2(0, 0)) + var counts := {} + for c in cards: + var k: int = mini(c.cost, 8) + counts[k] = counts.get(k, 0) + 1 + for i in range(1, 9): + var n: int = counts.get(i, 0) + var x := (i - 1) * 48 + draw_rect(Rect2(x, 104 - n * 5, 36, n * 5), Style.BLUE) + if n > 0: + Style.text(self, str(n), 11, Style.TEXT, Vector2(x + 18, 102 - n * 5), "midbottom") + Style.text(self, str(i) + ("+" if i == 8 else ""), 12, Style.MUTED, Vector2(x + 18, 108), "midtop") + + +func _ready() -> void: + slot = app.profile.active_deck + deck = app.profile.decks[slot].cards.duplicate() + Style.label(self, "Deck bauen", 30, Style.GOLD, Rect2(20, 8, 400, 40), "left", true) + Style.label(self, "Klick: Karte ins Deck. Klick in der Liste: Karte entfernen. Mausrad: scrollen.", + 14, Style.MUTED, Rect2(300, 18, 700, 24)) + Style.button(self, "Alle", Rect2(20, 55, 60, 34), set_filter.bind("")) + for i in Cards.ELEMENTS.size(): + var e: String = Cards.ELEMENTS[i] + Style.button(self, e, Rect2(88 + i * 76, 55, 70, 34), set_filter.bind(e), Style.darker(Cards.ELEMENT_COLORS[e], 0.8)) + search_box = LineEdit.new() + search_box.position = Vector2(400, 55) + search_box.size = Vector2(160, 34) + search_box.placeholder_text = "Suche" + search_box.text_changed.connect(func(t: String): + search = t + refresh()) + add_child(search_box) + sort_box = OptionButton.new() + sort_box.position = Vector2(570, 55) + sort_box.size = Vector2(130, 34) + for s in SORTS: + sort_box.add_item(s) + sort_box.item_selected.connect(func(i: int): + sort_mode = i + refresh()) + add_child(sort_box) + missing_box = CheckButton.new() + missing_box.position = Vector2(710, 58) + missing_box.text = "Fehlende" + missing_box.toggled.connect(func(on: bool): + show_missing = on + refresh()) + add_child(missing_box) + grid = CardGrid.new(Rect2(20, 100, CardGrid.COLS * (CardGrid.CW + CardGrid.GAP) + 10, 690)) + grid.card_clicked.connect(add) + grid.card_hover.connect(show_preview) + add_child(grid) + # Rechte Seite: Slots, Deckliste, Kurve + Style.panel(self, Rect2(845, 50, 420, 680)) + for i in Profile.DECK_SLOTS: + slot_buttons.append(Style.button(self, str(i + 1), Rect2(860 + i * 46, 58, 40, 32), select_slot.bind(i))) + b_activate = Style.button(self, "Aktiv setzen", Rect2(1100, 58, 150, 32), activate) + name_box = LineEdit.new() + name_box.position = Vector2(860, 98) + name_box.size = Vector2(200, 30) + name_box.max_length = 20 + name_box.text_submitted.connect(func(t: String): rename(t)) + name_box.focus_exited.connect(func(): rename(name_box.text)) + add_child(name_box) + deck_label = Style.label(self, "", 22, Style.TEXT, Rect2(1070, 98, 120, 30), "left", true) + active_label = Style.label(self, "", 14, Style.GREEN, Rect2(1180, 104, 75, 24), "right") + b_autofill = Style.button(self, "Auto-Ausfüllen", Rect2(1100, 154, 150, 26), autofill) + b_autofill.add_theme_font_size_override("font_size", 13) + elems_label = Style.label(self, "", 16, Style.MUTED, Rect2(860, 130, 390, 24)) + valid_label = Style.label(self, "", 14, Style.GREEN, Rect2(860, 156, 235, 22)) + deck_list = Control.new() + deck_list.position = Vector2(860, 182) + deck_list.mouse_filter = Control.MOUSE_FILTER_IGNORE + add_child(deck_list) + curve = EnergyCurve.new() + curve.position = Vector2(860, 604) + curve.size = Vector2(400, 125) + curve.mouse_filter = Control.MOUSE_FILTER_IGNORE + add_child(curve) + msg_label = Style.label(self, "", 16, Style.GREEN, Rect2(860, 736, 400, 24)) + Style.button(self, "Speichern", Rect2(860, 740, 180, 44), save_deck, Color("285a3c")) + Style.button(self, "Leeren", Rect2(1050, 740, 90, 44), clear_deck) + Style.button(self, "Zurück", Rect2(1150, 740, 110, 44), func(): app.show_screen(MenuScreen.new())) + preview = CardView.new(Cards.all()[0], Vector2(200, 280)) + preview.mouse_filter = Control.MOUSE_FILTER_IGNORE + preview.visible = false + add_child(preview) + refresh() + + +func _input(event: InputEvent) -> void: + if event is InputEventKey and event.pressed and event.keycode == KEY_ESCAPE and not search_box.has_focus() and not name_box.has_focus(): + app.show_screen(MenuScreen.new()) + + +func _process(_delta: float) -> void: + if preview.visible: + var pos := get_local_mouse_position() + Vector2(16, 16) + pos.x = clampf(pos.x, 0, 1280 - preview.size.x) + pos.y = clampf(pos.y, 0, 800 - preview.size.y) + preview.position = pos + + +func set_filter(e: String) -> void: + filter = e + refresh() + + +func select_slot(i: int) -> void: + slot = i + deck = app.profile.decks[slot].cards.duplicate() + say("", true) + refresh() + + +func rename(t: String) -> void: + if t.strip_edges() == app.profile.deck_name(slot): + return + var err: String = app.profile.rename_deck(slot, t) + if err == "": + app.save() + say("Umbenannt in %s" % app.profile.deck_name(slot), true) + else: + say(err, false) + refresh() + + +func autofill() -> void: + app.profile.decks[slot].cards = deck.duplicate() + var err: String = app.profile.autofill_deck(slot) + deck = app.profile.decks[slot].cards.duplicate() + if err == "": + app.save() + say("Aufgefüllt und gespeichert", true) + else: + say(err, false) + refresh() + + +func activate() -> void: + var ok: Array = Game.validate_deck(deck_cards(), app.profile.collection) + if not ok[0]: + say("Erst ein spielbares Deck speichern", false) + return + app.profile.decks[slot].cards = deck.duplicate() + app.profile.active_deck = slot + app.save() + say("%s ist jetzt das aktive Deck" % app.profile.deck_name(slot), true) + refresh() + + +## Karten der Sammlung (oder alle, wenn Fehlende gezeigt werden), gefiltert und sortiert. +func cards() -> Array: + var out: Array = Cards.all().duplicate() if show_missing else app.profile.owned_cards() + if filter != "": + out = out.filter(func(c): return filter in c.elements) + if search != "": + var q := search.to_lower() + out = out.filter(func(c): return q in c.name.to_lower() or q in c.text().to_lower() or q in c.combo().to_lower()) + match sort_mode: + 0: + out.sort_custom(func(a, b): return a.cost < b.cost or (a.cost == b.cost and a.name < b.name)) + 1: + out.sort_custom(func(a, b): return a.name < b.name) + 3: + out.sort_custom(func(a, b): + var ra := Cards.RARITIES.find(a.rarity) + var rb := Cards.RARITIES.find(b.rarity) + return ra > rb or (ra == rb and a.cost < b.cost)) + return out + + +func say(m: String, ok: bool) -> void: + msg_label.text = m + msg_label.add_theme_color_override("font_color", Style.GREEN if ok else Style.RED) + + +func add(card: Cards.Card) -> void: + var owned: int = app.profile.collection.get(card.id, 0) + var have := deck.count(card.id) + if owned == 0: + say("%s fehlt in deiner Sammlung (Werkstatt)" % card.name, false) + elif deck.size() >= Game.DECK_SIZE: + say("Das Deck ist voll (%d)" % Game.DECK_SIZE, false) + elif have >= mini(owned, Game.MAX_COPIES): + say("Nicht mehr Kopien möglich (max. %d)" % mini(owned, Game.MAX_COPIES), false) + else: + var elems := Game.deck_elements(deck_cards()) + for e in card.elements: + if not (e in elems): + elems.append(e) + if elems.size() > Game.MAX_DECK_ELEMENTS: + say("Höchstens %d Elemente im Deck" % Game.MAX_DECK_ELEMENTS, false) + else: + deck.append(card.id) + app.sfx.play("click") + say("", true) + refresh() + + +func remove(card: Cards.Card) -> void: + deck.erase(card.id) + say("", true) + refresh() + + +func clear_deck() -> void: + deck = [] + refresh() + + +func save_deck() -> void: + var ok: Array = Game.validate_deck(deck_cards(), app.profile.collection) + if ok[0]: + app.profile.decks[slot].cards = deck.duplicate() + app.save() + say("%s gespeichert" % app.profile.deck_name(slot), true) + else: + say(ok[1], false) + refresh() + + +func deck_cards() -> Array: + var out := [] + for cid in deck: + out.append(Cards.by_id(cid)) + return out + + +func show_preview(card: Cards.Card, entered: bool) -> void: + if entered: + preview.card = card + preview.visible = true + preview.queue_redraw() + elif preview.card == card: + preview.visible = false + + +func refresh() -> void: + var p: Profile = app.profile + grid.fill(cards(), + func(c): + var owned: int = p.collection.get(c.id, 0) + return "fehlt" if owned == 0 else "%d/%d im Deck" % [deck.count(c.id), owned], + func(c): + var owned: int = p.collection.get(c.id, 0) + return owned == 0 or deck.count(c.id) >= mini(owned, Game.MAX_COPIES)) + for i in slot_buttons.size(): + var b: Button = slot_buttons[i] + var col: Color = Style.GOLD if i == slot else (Style.GREEN if p.deck_valid(i)[0] else Style.MUTED) + b.add_theme_stylebox_override("normal", Style.box(Style.PANEL_LIGHT if i != slot else Style.darker(Style.GOLD, 0.45), 6, col, 2)) + b.add_theme_stylebox_override("hover", Style.box(Style.lighter(Style.PANEL_LIGHT), 6, col, 2)) + active_label.text = "aktiv" if slot == p.active_deck else "" + # Deckliste + Style.clear(deck_list) + var counts := {} + for cid in deck: + counts[cid] = counts.get(cid, 0) + 1 + var listed: Array = counts.keys().map(func(cid): return Cards.by_id(cid)) + listed.sort_custom(func(a, b): return a.cost < b.cost or (a.cost == b.cost and a.name < b.name)) + for i in listed.size(): + var c: Cards.Card = listed[i] + var row := DeckRow.new(c, counts[c.id], Vector2(400, 20)) + row.position = Vector2(0, i * 21) + row.clicked.connect(remove) + row.hover.connect(show_preview) + deck_list.add_child(row) + var dc := deck_cards() + if not name_box.has_focus(): + name_box.text = p.deck_name(slot) + deck_label.text = "%d/%d" % [deck.size(), Game.DECK_SIZE] + deck_label.add_theme_color_override("font_color", Style.GREEN if deck.size() == Game.DECK_SIZE else Style.TEXT) + var elems := Game.deck_elements(dc) + elems.sort_custom(func(a, b): return Cards.ELEMENTS.find(a) < Cards.ELEMENTS.find(b)) + elems_label.text = "Elemente: " + (", ".join(elems) if not elems.is_empty() else "–") + var ok: Array = Game.validate_deck(dc, p.collection) + valid_label.text = "spielbar" if ok[0] else ok[1] + valid_label.add_theme_color_override("font_color", Style.GREEN if ok[0] else Style.ORANGE) + curve.cards = dc + curve.queue_redraw() diff --git a/scripts/ui/deck_screen.gd.uid b/scripts/ui/deck_screen.gd.uid new file mode 100644 index 0000000..972d8f1 --- /dev/null +++ b/scripts/ui/deck_screen.gd.uid @@ -0,0 +1 @@ +uid://yg8pbj56mib5 diff --git a/scripts/ui/hotseat_screen.gd b/scripts/ui/hotseat_screen.gd new file mode 100644 index 0000000..bf6bb6e --- /dev/null +++ b/scripts/ui/hotseat_screen.gd @@ -0,0 +1,111 @@ +class_name HotseatScreen +extends Control +## Lokal zu mehreren am selben Rechner: Spielerzahl, KI-Zahl und Decks wählen. + +var app +var n_humans := 2 +var n_ai := 0 +var deck_choice: Array = [] # je Mensch: Slot-Index oder -1 für Zufallsdeck +var human_buttons: Array = [] +var ai_buttons: Array = [] +var deck_rows: VBoxContainer +var b_start: Button +var hint: Label + + +func _ready() -> void: + var col := Style.column(self, 760, 40, 10) + Style.clabel(col, "Lokal zu mehreren", 36, Style.GOLD, "center", true) + Style.clabel(col, "Alle spielen am selben Rechner und reichen die Maus weiter. Jeder gegen jeden, ohne Münzen.", 16, Style.MUTED) + Style.spacer(col, 10) + Style.clabel(col, "Spieler", 20, Style.TEXT, "center", true) + var hr := Style.row(col, 10) + hr.alignment = BoxContainer.ALIGNMENT_CENTER + for n in range(2, 5): + human_buttons.append(Style.cbutton(hr, "%d Spieler" % n, Vector2(150, 44), func(): set_humans(n))) + Style.clabel(col, "KI-Gegner", 20, Style.TEXT, "center", true) + var ar := Style.row(col, 10) + ar.alignment = BoxContainer.ALIGNMENT_CENTER + for n in range(0, 5): + ai_buttons.append(Style.cbutton(ar, "%d KI" % n if n > 0 else "keine KI", Vector2(120, 44), func(): set_ai(n))) + Style.spacer(col, 6) + Style.clabel(col, "Decks", 20, Style.TEXT, "center", true) + deck_rows = VBoxContainer.new() + deck_rows.add_theme_constant_override("separation", 6) + col.add_child(deck_rows) + Style.spacer(col, 6) + hint = Style.clabel(col, "", 15, Style.ORANGE) + var br := Style.row(col, 20) + br.alignment = BoxContainer.ALIGNMENT_CENTER + b_start = Style.cbutton(br, "Start", Vector2(200, 48), start, Color("285a3c")) + Style.cbutton(br, "Zurück", Vector2(160, 48), func(): app.show_screen(MenuScreen.new())) + for i in 4: + deck_choice.append(-1) + var p: Profile = app.profile + if p.deck_valid()[0]: + deck_choice[0] = p.active_deck + refresh() + + +func _input(event: InputEvent) -> void: + if event is InputEventKey and event.pressed and event.keycode == KEY_ESCAPE: + app.show_screen(MenuScreen.new()) + + +func set_humans(n: int) -> void: + n_humans = n + n_ai = mini(n_ai, Game.MAX_OPPONENTS + 1 - n_humans) + refresh() + + +func set_ai(n: int) -> void: + n_ai = n + refresh() + + +func valid_slots() -> Array: + var out := [] + for i in Profile.DECK_SLOTS: + if app.profile.deck_valid(i)[0]: + out.append(i) + return out + + +func refresh() -> void: + var p: Profile = app.profile + for i in human_buttons.size(): + human_buttons[i].disabled = (i + 2) == n_humans + for i in ai_buttons.size(): + ai_buttons[i].disabled = i == n_ai or n_humans + i > Game.MAX_OPPONENTS + 1 + Style.clear(deck_rows) + var slots := valid_slots() + for h in n_humans: + var r := Style.row(deck_rows, 12) + r.alignment = BoxContainer.ALIGNMENT_CENTER + Style.clabel(r, "Spieler %d" % (h + 1), 16, Style.TEXT, "right", true, 140) + var ob := OptionButton.new() + ob.custom_minimum_size = Vector2(340, 36) + ob.add_item("Zufallsdeck", -1) + for slot in slots: + var elems := Game.deck_elements(p.deck_cards(slot)) + ob.add_item("%s (%s)" % [p.deck_name(slot), ", ".join(elems)], slot) + ob.select(ob.get_item_index(deck_choice[h]) if deck_choice[h] >= 0 and slots.has(deck_choice[h]) else 0) + var idx := h + ob.item_selected.connect(func(i: int): deck_choice[idx] = ob.get_item_id(i)) + r.add_child(ob) + hint.text = "%d am Tisch" % (n_humans + n_ai) + + +func start() -> void: + var p: Profile = app.profile + var r := Game.make_rng() + var decks := [] + for h in n_humans: + var slot: int = deck_choice[h] + if slot >= 0 and p.deck_valid(slot)[0]: + decks.append(p.deck_cards(slot)) + else: + var pool: Array = Cards.ELEMENTS.duplicate() + Game.shuffle(pool, r) + decks.append(Game.build_opponent_deck(r, [pool[0], pool[1]])) + app.show_screen(BattleScreen.hotseat(decks, n_ai)) diff --git a/scripts/ui/hotseat_screen.gd.uid b/scripts/ui/hotseat_screen.gd.uid new file mode 100644 index 0000000..6b9ec77 --- /dev/null +++ b/scripts/ui/hotseat_screen.gd.uid @@ -0,0 +1 @@ +uid://crlne4y0uiygl diff --git a/scripts/ui/lobby_screen.gd b/scripts/ui/lobby_screen.gd new file mode 100644 index 0000000..f601fb3 --- /dev/null +++ b/scripts/ui/lobby_screen.gd @@ -0,0 +1,112 @@ +class_name LobbyScreen +extends Control +## Netzwerkspiel im lokalen Netz: Spiel eröffnen oder beitreten. + +var app +var net: Net +var status_label: Label +var list_label: Label +var ip_box: LineEdit +var b_host: Button +var b_join: Button +var b_start: Button +var ai_buttons: Array = [] +var n_ai := 0 +var addr_label: Label + + +func _ready() -> void: + net = app.net + net.my_name = "Spieler" + net.my_deck = app.profile.deck.duplicate() + var col := Style.column(self, 760, 40, 10) + Style.clabel(col, "Netzwerkspiel", 36, Style.GOLD, "center", true) + Style.clabel(col, "Im selben Netz: einer eröffnet, die anderen treten mit seiner Adresse bei. Jeder gegen jeden, ohne Münzen.", 16, Style.MUTED) + Style.spacer(col, 10) + var hr := Style.row(col, 12) + hr.alignment = BoxContainer.ALIGNMENT_CENTER + b_host = Style.cbutton(hr, "Spiel eröffnen", Vector2(200, 46), _host, Color("285a3c")) + ip_box = LineEdit.new() + ip_box.custom_minimum_size = Vector2(220, 46) + ip_box.placeholder_text = "Adresse des Hosts" + ip_box.text = "127.0.0.1" + hr.add_child(ip_box) + b_join = Style.cbutton(hr, "Beitreten", Vector2(160, 46), _join) + addr_label = Style.clabel(col, "", 14, Style.MUTED) + status_label = Style.clabel(col, "", 16, Style.BLUE) + Style.spacer(col, 6) + Style.clabel(col, "Am Tisch", 20, Style.TEXT, "center", true) + list_label = Style.clabel(col, "", 16, Style.TEXT) + Style.spacer(col, 6) + Style.clabel(col, "KI-Gegner (nur Host)", 16, Style.MUTED) + var ar := Style.row(col, 10) + ar.alignment = BoxContainer.ALIGNMENT_CENTER + for n in range(0, 5): + ai_buttons.append(Style.cbutton(ar, "%d KI" % n if n > 0 else "keine KI", Vector2(120, 40), func(): _set_ai(n))) + Style.spacer(col, 10) + var br := Style.row(col, 20) + br.alignment = BoxContainer.ALIGNMENT_CENTER + b_start = Style.cbutton(br, "Start", Vector2(200, 48), _start, Color("285a3c")) + Style.cbutton(br, "Zurück", Vector2(160, 48), _back) + net.lobby_changed.connect(refresh) + net.started.connect(_started) + net.ended.connect(func(_reason): refresh()) + refresh() + + +func _exit_tree() -> void: + if net.lobby_changed.is_connected(refresh): + net.lobby_changed.disconnect(refresh) + if net.started.is_connected(_started): + net.started.disconnect(_started) + + +func _host() -> void: + net.host() + refresh() + + +func _join() -> void: + net.join(ip_box.text.strip_edges()) + refresh() + + +func _set_ai(n: int) -> void: + n_ai = n + refresh() + + +func _start() -> void: + net.start_battle(n_ai) + + +func _started(seat: int) -> void: + app.show_screen(BattleScreen.online(seat)) + + +func _back() -> void: + net.leave() + app.show_screen(MenuScreen.new()) + + +func refresh() -> void: + status_label.text = net.status + var lines: Array[String] = [] + var ids: Array = net.names.keys() + ids.sort() + for id in ids: + lines.append("%s%s" % [net.names[id], " (Host)" if id == 1 else ""]) + list_label.text = "\n".join(lines) if not lines.is_empty() else "–" + b_host.disabled = net.connected + b_join.disabled = net.connected + ip_box.editable = not net.connected + var humans := ids.size() + b_start.disabled = not (net.is_host and humans >= 2 and humans + n_ai <= Game.MAX_OPPONENTS + 1) + for i in ai_buttons.size(): + ai_buttons[i].disabled = not net.is_host or i == n_ai or humans + i > Game.MAX_OPPONENTS + 1 + addr_label.text = ("Deine Adressen: " + ", ".join(net.local_addresses())) if net.is_host else "" + + +func _input(event: InputEvent) -> void: + if event is InputEventKey and event.pressed and event.keycode == KEY_ESCAPE and not ip_box.has_focus(): + _back() diff --git a/scripts/ui/lobby_screen.gd.uid b/scripts/ui/lobby_screen.gd.uid new file mode 100644 index 0000000..5b3846c --- /dev/null +++ b/scripts/ui/lobby_screen.gd.uid @@ -0,0 +1 @@ +uid://bhnnxjh6rsxnf diff --git a/scripts/ui/main.gd b/scripts/ui/main.gd new file mode 100644 index 0000000..09ffe48 --- /dev/null +++ b/scripts/ui/main.gd @@ -0,0 +1,52 @@ +extends Control +## Einstieg: hält den Spielstand und wechselt zwischen den Bildschirmen. + +var profile: Profile +var screen: Control +var save_path: String = Profile.SAVE_PATH +var sfx: Sfx +var net: Net + + +func _ready() -> void: + theme = Style.make_theme() + var bg := Style.Backdrop.new() + bg.set_anchors_preset(Control.PRESET_FULL_RECT) + bg.mouse_filter = Control.MOUSE_FILTER_IGNORE + add_child(bg) + sfx = Sfx.new() + add_child(sfx) + # Fester Pfad /root/Net: Netzwerkaufrufe werden über den Knotenpfad zugestellt, + # der bei Host und Mitspielern gleich sein muss. + net = Net.new() + net.name = "Net" + get_tree().root.add_child.call_deferred(net) + profile = Profile.load_or_new(save_path) + profile.refresh_daily() + sfx.set_volume(profile.settings.volume) + sfx.set_music_volume(profile.settings.music) + set_language(profile.settings.language) + show_screen(MenuScreen.new()) + + +func set_language(code: String) -> void: + TranslationServer.set_locale(code) + + +func show_screen(s: Control) -> void: + if screen != null: + screen.queue_free() + screen = s + s.app = self + s.set_anchors_preset(Control.PRESET_FULL_RECT) + add_child(s) + + +func save() -> void: + profile.save(save_path) + + +func _exit_tree() -> void: + if net != null and net.is_inside_tree(): + net.leave() + net.queue_free() diff --git a/scripts/ui/main.gd.uid b/scripts/ui/main.gd.uid new file mode 100644 index 0000000..084b29f --- /dev/null +++ b/scripts/ui/main.gd.uid @@ -0,0 +1 @@ +uid://bkltqeiif4e0j diff --git a/scripts/ui/menu_screen.gd b/scripts/ui/menu_screen.gd new file mode 100644 index 0000000..4616291 --- /dev/null +++ b/scripts/ui/menu_screen.gd @@ -0,0 +1,84 @@ +class_name MenuScreen +extends Control + +var app +var b_single: Button +var b_campaign: Button +var b_hotseat: Button +var b_online: Button +var b_tutorial: Button +var coins_label: Label +var coll_label: Label +var deck_label: Label +var daily_label: Label +var warn_label: Label +var notice_label: Label + + +func _ready() -> void: + var col := Style.column(self, 640, 24, 5) + Style.clabel(col, "Dinger", 64, Style.GOLD, "center", true) + Style.clabel(col, "Ein Kartenspiel: jeder gegen jeden", 22, Style.MUTED) + Style.spacer(col, 8) + coins_label = Style.clabel(col, "", 20, Style.GOLD) + coll_label = Style.clabel(col, "", 16, Style.MUTED) + deck_label = Style.clabel(col, "", 16, Style.MUTED) + daily_label = Style.clabel(col, "", 16, Style.BLUE) + Style.spacer(col, 8) + var grid := GridContainer.new() + grid.columns = 2 + grid.add_theme_constant_override("h_separation", 12) + grid.add_theme_constant_override("v_separation", 8) + var center := CenterContainer.new() + center.add_child(grid) + col.add_child(center) + var sz := Vector2(270, 44) + var p0: Profile = app.profile + b_tutorial = Style.cbutton(grid, "Anleitung", sz, func(): app.show_screen(BattleScreen.guided()), + Color("5a4628") if not p0.tutorial_done else null) + b_single = Style.cbutton(grid, "Einzelspieler", sz, func(): app.show_screen(OpponentSelectScreen.new()), Color("285a3c")) + b_campaign = Style.cbutton(grid, "Kampagne", sz, func(): app.show_screen(CampaignScreen.new()), Color("285a3c")) + b_hotseat = Style.cbutton(grid, "Lokal zu mehreren", sz, func(): app.show_screen(HotseatScreen.new()), Color("285a3c")) + b_online = Style.cbutton(grid, "Netzwerkspiel", sz, func(): app.show_screen(LobbyScreen.new()), Color("285a3c")) + Style.cbutton(grid, "Booster öffnen", sz, func(): app.show_screen(BoosterScreen.new())) + Style.cbutton(grid, "Deck bauen", sz, func(): app.show_screen(DeckScreen.new())) + Style.cbutton(grid, "Werkstatt", sz, func(): app.show_screen(WorkshopScreen.new())) + Style.cbutton(grid, "Erfolge", sz, func(): app.show_screen(AchievementsScreen.new())) + Style.cbutton(grid, "Regeln", sz, func(): app.show_screen(RulesScreen.new())) + Style.cbutton(grid, "Einstellungen", sz, func(): app.show_screen(SettingsScreen.new())) + Style.cbutton(grid, "Beenden", sz, func(): get_tree().quit()) + Style.spacer(col, 10) + warn_label = Style.clabel(col, "", 16, Style.RED) + notice_label = Style.clabel(col, "", 16, Style.GREEN) + notice_label.autowrap_mode = TextServer.AUTOWRAP_WORD + refresh() + + +func refresh() -> void: + var p: Profile = app.profile + var ok: Array = p.deck_valid() + b_single.disabled = not ok[0] + b_campaign.disabled = not ok[0] + b_tutorial.disabled = not ok[0] + b_online.disabled = not ok[0] + var total := 0 + for cid in p.collection: + total += p.collection[cid] + coins_label.text = "Münzen: %d · Staub: %d" % [p.coins, p.dust] + coll_label.text = "Sammlung: %d von %d Karten (%d insgesamt) · Kampagne: %d/%d" % [ + p.distinct_owned(), Cards.all().size(), total, p.campaign_stage, Campaign.STAGES.size()] + var elems := Game.deck_elements(p.deck_cards()) + deck_label.text = "Aktives Deck: %s (%s)" % [p.deck_name(), ", ".join(elems) if not elems.is_empty() else "leer"] + var task := p.daily_task() + if p.daily.done: + daily_label.text = "Tagesaufgabe erledigt: %s ✓" % task.text + else: + daily_label.text = "Tagesaufgabe: %s (%d/%d) · +%d Münzen" % [task.text, p.daily.progress, task.goal, task.reward] + warn_label.text = "" if ok[0] else "Aktives Deck nicht spielbar: " + ok[1] + if ok[0] and not p.tutorial_done: + warn_label.text = "Neu hier? Die Anleitung erklärt Energie, Angriffe, Resonanz und Feldkombos." + warn_label.add_theme_color_override("font_color", Style.GOLD) + var notes := p.take_notices() + notice_label.text = " · ".join(notes) + if not notes.is_empty(): + app.save() diff --git a/scripts/ui/menu_screen.gd.uid b/scripts/ui/menu_screen.gd.uid new file mode 100644 index 0000000..3c67cf5 --- /dev/null +++ b/scripts/ui/menu_screen.gd.uid @@ -0,0 +1 @@ +uid://3ib6kcyl21f diff --git a/scripts/ui/opponent_select_screen.gd b/scripts/ui/opponent_select_screen.gd new file mode 100644 index 0000000..d47725b --- /dev/null +++ b/scripts/ui/opponent_select_screen.gd @@ -0,0 +1,29 @@ +class_name OpponentSelectScreen +extends Control +## Einzelspieler: Auswahl, gegen wie viele Gegner gekämpft wird. + +var app + + +func _ready() -> void: + var col := Style.column(self, 900, 50, 14) + Style.clabel(col, "Einzelspieler", 36, Style.GOLD, "center", true) + Style.clabel(col, "Wie viele Gegner? Jeder kämpft gegen jeden, alle nach denselben Regeln mit %d Leben." % Game.START_LIFE, 18, Style.MUTED) + Style.clabel(col, "Du gewinnst, wenn alle anderen besiegt sind. Mehr Gegner, mehr Chaos, mehr Münzen.", 16, Style.MUTED) + Style.spacer(col, 10) + for i in range(1, Game.MAX_OPPONENTS + 1): + var n := i + var r := Style.row(col, 20) + r.alignment = BoxContainer.ALIGNMENT_CENTER + Style.cbutton(r, "%d Gegner" % n, Vector2(200, 56), func(): app.show_screen(BattleScreen.new(n)), Color("285a3c")) + var info := ("Duell" if n == 1 else "%d Spieler am Tisch" % (n + 1)) + " · Sieg: %d Münzen" % Profile.REWARD_WIN[n] + Style.clabel(r, info, 16, Style.MUTED, "left", false, 420) + Style.spacer(col, 20) + var br := Style.row(col) + br.alignment = BoxContainer.ALIGNMENT_CENTER + Style.cbutton(br, "Zurück", Vector2(160, 44), func(): app.show_screen(MenuScreen.new())) + + +func _input(event: InputEvent) -> void: + if event is InputEventKey and event.pressed and event.keycode == KEY_ESCAPE: + app.show_screen(MenuScreen.new()) diff --git a/scripts/ui/opponent_select_screen.gd.uid b/scripts/ui/opponent_select_screen.gd.uid new file mode 100644 index 0000000..ea2ee81 --- /dev/null +++ b/scripts/ui/opponent_select_screen.gd.uid @@ -0,0 +1 @@ +uid://cjpjji3gxmxvf diff --git a/scripts/ui/rules_screen.gd b/scripts/ui/rules_screen.gd new file mode 100644 index 0000000..2a4ddbd --- /dev/null +++ b/scripts/ui/rules_screen.gd @@ -0,0 +1,25 @@ +class_name RulesScreen +extends Control + +var app + + +func _ready() -> void: + Style.label(self, "Regeln", 36, Style.GOLD, Rect2(0, 18, 1280, 50), "center", true) + var scroll := ScrollContainer.new() + scroll.position = Vector2(60, 78) + scroll.size = Vector2(1160, 640) + scroll.horizontal_scroll_mode = ScrollContainer.SCROLL_MODE_DISABLED + add_child(scroll) + var text := Label.new() + text.text = Style.rules_text() + text.autowrap_mode = TextServer.AUTOWRAP_WORD + text.custom_minimum_size = Vector2(1140, 0) + text.add_theme_font_size_override("font_size", 15) + scroll.add_child(text) + Style.button(self, "Zurück", Rect2(560, 735, 160, 44), func(): app.show_screen(MenuScreen.new())) + + +func _input(event: InputEvent) -> void: + if event is InputEventKey and event.pressed and event.keycode == KEY_ESCAPE: + app.show_screen(MenuScreen.new()) diff --git a/scripts/ui/rules_screen.gd.uid b/scripts/ui/rules_screen.gd.uid new file mode 100644 index 0000000..e54ee77 --- /dev/null +++ b/scripts/ui/rules_screen.gd.uid @@ -0,0 +1 @@ +uid://bkemrytc2pjem diff --git a/scripts/ui/settings_screen.gd b/scripts/ui/settings_screen.gd new file mode 100644 index 0000000..05556d7 --- /dev/null +++ b/scripts/ui/settings_screen.gd @@ -0,0 +1,121 @@ +class_name SettingsScreen +extends Control + +var app +var volume: HSlider +var music: HSlider +var speed: HSlider +var language: OptionButton +var music_label: Label +var anim: CheckButton +var volume_label: Label +var speed_label: Label + + +func _ready() -> void: + var s: Dictionary = app.profile.settings + var col := Style.column(self, 700, 50, 24) + Style.clabel(col, "Einstellungen", 36, Style.GOLD, "center", true) + Style.spacer(col, 30) + var grid := GridContainer.new() + grid.columns = 3 + grid.add_theme_constant_override("h_separation", 24) + grid.add_theme_constant_override("v_separation", 30) + col.add_child(grid) + Style.clabel(grid, "Lautstärke", 20, Style.TEXT, "left", false, 200) + volume = HSlider.new() + volume.custom_minimum_size = Vector2(280, 24) + volume.min_value = 0 + volume.max_value = 1 + volume.step = 0.05 + volume.value = s.volume + volume.value_changed.connect(_on_volume) + grid.add_child(volume) + volume_label = Style.clabel(grid, "", 18, Style.MUTED, "left", false, 100) + Style.clabel(grid, "Musik", 20, Style.TEXT, "left", false, 200) + music = HSlider.new() + music.custom_minimum_size = Vector2(280, 24) + music.min_value = 0 + music.max_value = 1 + music.step = 0.05 + music.value = s.music + music.value_changed.connect(_on_music) + grid.add_child(music) + music_label = Style.clabel(grid, "", 18, Style.MUTED, "left", false, 100) + Style.clabel(grid, "KI-Tempo", 20, Style.TEXT, "left", false, 200) + speed = HSlider.new() + speed.custom_minimum_size = Vector2(280, 24) + speed.min_value = 0.5 + speed.max_value = 3.0 + speed.step = 0.25 + speed.value = s.ai_speed + speed.value_changed.connect(_on_speed) + grid.add_child(speed) + speed_label = Style.clabel(grid, "", 18, Style.MUTED, "left", false, 100) + Style.clabel(grid, "Animationen", 20, Style.TEXT, "left", false, 200) + anim = CheckButton.new() + anim.button_pressed = s.animations + anim.toggled.connect(_on_anim) + grid.add_child(anim) + Style.clabel(grid, "", 18, Style.MUTED, "left", false, 100) + Style.clabel(grid, "Sprache", 20, Style.TEXT, "left", false, 200) + language = OptionButton.new() + language.custom_minimum_size = Vector2(280, 36) + language.add_item("Deutsch", 0) + language.add_item("English (Oberfläche)", 1) + language.select(1 if s.language == "en" else 0) + language.item_selected.connect(_on_language) + grid.add_child(language) + Style.clabel(grid, "", 18, Style.MUTED, "left", false, 100) + Style.spacer(col, 20) + Style.clabel(col, "Der Spielstand liegt unter %s" % ProjectSettings.globalize_path(Profile.SAVE_PATH), 13, Style.MUTED) + Style.spacer(col, 60) + var r := Style.row(col) + r.alignment = BoxContainer.ALIGNMENT_CENTER + Style.cbutton(r, "Zurück", Vector2(160, 44), func(): app.show_screen(MenuScreen.new())) + _labels() + + +func _labels() -> void: + volume_label.text = "%d %%" % int(round(volume.value * 100)) + music_label.text = "%d %%" % int(round(music.value * 100)) + speed_label.text = "%.2fx" % speed.value + + +func _on_music(v: float) -> void: + app.profile.settings.music = v + app.sfx.set_music_volume(v) + app.save() + _labels() + + +func _on_language(i: int) -> void: + var code := "en" if i == 1 else "de" + app.profile.settings.language = code + app.save() + app.set_language(code) + app.show_screen(SettingsScreen.new()) + + +func _on_volume(v: float) -> void: + app.profile.settings.volume = v + app.sfx.set_volume(v) + app.sfx.play("click") + app.save() + _labels() + + +func _on_speed(v: float) -> void: + app.profile.settings.ai_speed = v + app.save() + _labels() + + +func _on_anim(on: bool) -> void: + app.profile.settings.animations = on + app.save() + + +func _input(event: InputEvent) -> void: + if event is InputEventKey and event.pressed and event.keycode == KEY_ESCAPE: + app.show_screen(MenuScreen.new()) diff --git a/scripts/ui/settings_screen.gd.uid b/scripts/ui/settings_screen.gd.uid new file mode 100644 index 0000000..cc359d9 --- /dev/null +++ b/scripts/ui/settings_screen.gd.uid @@ -0,0 +1 @@ +uid://i4f1frwa2cmm diff --git a/scripts/ui/sfx.gd b/scripts/ui/sfx.gd new file mode 100644 index 0000000..067a088 --- /dev/null +++ b/scripts/ui/sfx.gd @@ -0,0 +1,107 @@ +class_name Sfx +extends Node +## Kurze, zur Laufzeit erzeugte Töne (keine Audiodateien nötig). + +static var inst: Sfx + +var streams := {} +var players: Array[AudioStreamPlayer] = [] +var volume := 0.8 +var music_player: AudioStreamPlayer +var music_volume := 0.5 + + +func _ready() -> void: + inst = self + streams["click"] = _tone(880, 0.05, "sine") + streams["play"] = _tone(440, 0.14, "sine", 660) + streams["attack"] = _tone(220, 0.16, "square", 90) + streams["damage"] = _tone(140, 0.12, "square") + streams["heal"] = _tone(523, 0.22, "sine", 784) + streams["combo"] = _tone(660, 0.2, "sine", 1100) + streams["win"] = _tone(400, 0.6, "sine", 1200) + streams["lose"] = _tone(320, 0.7, "square", 90) + for i in 4: + var p := AudioStreamPlayer.new() + add_child(p) + players.append(p) + music_player = AudioStreamPlayer.new() + music_player.stream = _music() + add_child(music_player) + set_music_volume(music_volume) + + +## Leise Hintergrundmusik: Arpeggio über vier Akkorde, als Schleife erzeugt. +func _music() -> AudioStreamWAV: + var rate := 22050 + var chords := [[220.0, 261.63, 329.63], [174.61, 220.0, 261.63], [130.81, 164.81, 196.0], [196.0, 246.94, 293.66]] + var note_len := 0.25 + var pattern := [0, 1, 2, 1, 0, 2, 1, 2] + var total := chords.size() * pattern.size() * note_len + var n := int(total * rate) + var data := PackedByteArray() + data.resize(n * 2) + for i in n: + var t := float(i) / rate + var step := int(t / note_len) + var chord: Array = chords[(step / pattern.size()) % chords.size()] + var f: float = chord[pattern[step % pattern.size()]] + var lt := t - step * note_len + var env := minf(1.0, lt * 30.0) * maxf(0.0, 1.0 - lt / note_len) + var v := sin(TAU * f * t) * 0.6 + sin(TAU * f * 2.0 * t) * 0.15 + sin(TAU * chord[0] * 0.5 * t) * 0.25 + data.encode_s16(i * 2, int(clampf(v * env * 0.25, -1.0, 1.0) * 32767)) + var wav := AudioStreamWAV.new() + wav.format = AudioStreamWAV.FORMAT_16_BITS + wav.mix_rate = rate + wav.stereo = false + wav.data = data + wav.loop_mode = AudioStreamWAV.LOOP_FORWARD + wav.loop_begin = 0 + wav.loop_end = n + return wav + + +func set_music_volume(v: float) -> void: + music_volume = clampf(v, 0.0, 1.0) + if music_volume <= 0.0: + music_player.stop() + else: + music_player.volume_db = linear_to_db(music_volume * 0.6) + if not music_player.playing: + music_player.play() + + +func set_volume(v: float) -> void: + volume = clampf(v, 0.0, 1.0) + + +func play(kind: String) -> void: + if volume <= 0.0 or not streams.has(kind): + return + for p in players: + if not p.playing: + p.stream = streams[kind] + p.volume_db = linear_to_db(volume) + p.play() + return + + +func _tone(freq: float, dur: float, shape: String, freq_end: float = -1.0) -> AudioStreamWAV: + var rate := 22050 + var n := int(dur * rate) + var data := PackedByteArray() + data.resize(n * 2) + for i in n: + var t := float(i) / rate + var f := freq if freq_end < 0 else lerpf(freq, freq_end, t / dur) + var env := 1.0 - t / dur + var v := sin(TAU * f * t) + if shape == "square": + v = 1.0 if v >= 0 else -1.0 + data.encode_s16(i * 2, int(clampf(v * env * 0.4, -1.0, 1.0) * 32767)) + var wav := AudioStreamWAV.new() + wav.format = AudioStreamWAV.FORMAT_16_BITS + wav.mix_rate = rate + wav.stereo = false + wav.data = data + return wav diff --git a/scripts/ui/sfx.gd.uid b/scripts/ui/sfx.gd.uid new file mode 100644 index 0000000..0c912d4 --- /dev/null +++ b/scripts/ui/sfx.gd.uid @@ -0,0 +1 @@ +uid://bprwiyidhn7ek diff --git a/scripts/ui/style.gd b/scripts/ui/style.gd new file mode 100644 index 0000000..c620fc9 --- /dev/null +++ b/scripts/ui/style.gd @@ -0,0 +1,365 @@ +class_name Style +## Farben, Schriften, Theme und Zeichenhilfen. + +const FONT: FontFile = preload("res://assets/fonts/DejaVuSans.ttf") +const FONT_BOLD: FontFile = preload("res://assets/fonts/DejaVuSans-Bold.ttf") + +const BG := Color("1a1c24") +const PANEL := Color("282b36") +const PANEL_LIGHT := Color("3a3e4c") +const TEXT := Color("ececf0") +const MUTED := Color("9698a5") +const GOLD := Color("f5c850") +const GREEN := Color("5ad282") +const RED := Color("e65555") +const BLUE := Color("6eaaf0") +const YELLOW := Color("ffe65a") +const ORANGE := Color("ff963c") + + +static func darker(c: Color, f: float = 0.65) -> Color: + return Color(c.r * f, c.g * f, c.b * f, c.a) + + +static func lighter(c: Color, d: float = 0.1) -> Color: + return Color(minf(1, c.r + d), minf(1, c.g + d), minf(1, c.b + d), c.a) + + +static func box(bg: Color, radius: int = 8, border_col = null, border_w: int = 0) -> StyleBoxFlat: + var sb := StyleBoxFlat.new() + sb.bg_color = bg + sb.set_corner_radius_all(radius) + if border_col != null: + sb.border_color = border_col + sb.set_border_width_all(border_w) + return sb + + +static func make_theme() -> Theme: + var t := Theme.new() + t.default_font = FONT + t.default_font_size = 16 + t.set_stylebox("normal", "Button", box(PANEL_LIGHT, 8, MUTED, 2)) + t.set_stylebox("hover", "Button", box(lighter(PANEL_LIGHT), 8, MUTED, 2)) + t.set_stylebox("pressed", "Button", box(darker(PANEL_LIGHT), 8, MUTED, 2)) + t.set_stylebox("disabled", "Button", box(darker(PANEL, 0.9), 8, PANEL, 2)) + t.set_stylebox("focus", "Button", StyleBoxEmpty.new()) + for name in ["font_color", "font_hover_color", "font_pressed_color", "font_focus_color", "font_hover_pressed_color"]: + t.set_color(name, "Button", TEXT) + t.set_color("font_disabled_color", "Button", MUTED) + t.set_font_size("font_size", "Button", 18) + t.set_color("font_color", "Label", TEXT) + t.set_stylebox("panel", "Panel", box(PANEL, 8)) + t.set_stylebox("normal", "RichTextLabel", StyleBoxEmpty.new()) + t.set_stylebox("focus", "RichTextLabel", StyleBoxEmpty.new()) + t.set_stylebox("panel", "ScrollContainer", StyleBoxEmpty.new()) + t.set_stylebox("normal", "LineEdit", box(PANEL_LIGHT, 6, MUTED, 1)) + t.set_stylebox("focus", "LineEdit", box(PANEL_LIGHT, 6, BLUE, 2)) + t.set_color("font_color", "LineEdit", TEXT) + t.set_color("font_placeholder_color", "LineEdit", MUTED) + t.set_stylebox("normal", "OptionButton", box(PANEL_LIGHT, 6, MUTED, 1)) + t.set_stylebox("hover", "OptionButton", box(lighter(PANEL_LIGHT), 6, MUTED, 1)) + t.set_stylebox("pressed", "OptionButton", box(darker(PANEL_LIGHT), 6, MUTED, 1)) + t.set_stylebox("focus", "OptionButton", StyleBoxEmpty.new()) + t.set_color("font_color", "OptionButton", TEXT) + t.set_color("font_color", "CheckButton", TEXT) + t.set_stylebox("focus", "CheckButton", StyleBoxEmpty.new()) + return t + + +# --- Knoten-Hilfen ------------------------------------------------------------- + +static func panel(parent: Node, rect: Rect2, bg: Color = PANEL, radius: int = 8, border_col = null, border_w: int = 0) -> Panel: + var p := Panel.new() + p.position = rect.position + p.size = rect.size + p.add_theme_stylebox_override("panel", box(bg, radius, border_col, border_w)) + p.mouse_filter = Control.MOUSE_FILTER_IGNORE + parent.add_child(p) + return p + + +static func label(parent: Node, text: String, size: int, color: Color, rect: Rect2, align: String = "left", bold: bool = false) -> Label: + var l := Label.new() + l.text = text + l.position = rect.position + l.size = rect.size + l.add_theme_font_size_override("font_size", size) + l.add_theme_color_override("font_color", color) + if bold: + l.add_theme_font_override("font", FONT_BOLD) + match align: + "center": + l.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER + "right": + l.horizontal_alignment = HORIZONTAL_ALIGNMENT_RIGHT + l.mouse_filter = Control.MOUSE_FILTER_IGNORE + parent.add_child(l) + return l + + +static func button(parent: Node, text: String, rect: Rect2, on_pressed: Callable, color = null) -> Button: + var b := Button.new() + b.text = text + b.position = rect.position + b.size = rect.size + b.pressed.connect(on_pressed) + if color != null: + b.add_theme_stylebox_override("normal", box(color, 8, MUTED, 2)) + b.add_theme_stylebox_override("hover", box(lighter(color), 8, MUTED, 2)) + b.add_theme_stylebox_override("pressed", box(darker(color), 8, MUTED, 2)) + parent.add_child(b) + return b + + +## Vertikal zentrierte Spalte (Container-Layout für Menübildschirme). +static func column(parent: Node, width: float, top: float, sep: int = 12) -> VBoxContainer: + var v := VBoxContainer.new() + v.anchor_left = 0.5 + v.anchor_right = 0.5 + v.anchor_top = 0 + v.anchor_bottom = 0 + v.offset_left = -width / 2 + v.offset_right = width / 2 + v.offset_top = top + v.add_theme_constant_override("separation", sep) + v.mouse_filter = Control.MOUSE_FILTER_IGNORE + parent.add_child(v) + return v + + +static func row(parent: Node, sep: int = 12) -> HBoxContainer: + var h := HBoxContainer.new() + h.add_theme_constant_override("separation", sep) + h.mouse_filter = Control.MOUSE_FILTER_IGNORE + parent.add_child(h) + return h + + +## Label in einem Container. +static func clabel(parent: Node, text: String, size: int, color: Color, align: String = "center", bold: bool = false, min_w: float = 0) -> Label: + var l := label(parent, text, size, color, Rect2(0, 0, 0, 0), align, bold) + l.size_flags_horizontal = Control.SIZE_EXPAND_FILL if min_w == 0 else Control.SIZE_FILL + if min_w > 0: + l.custom_minimum_size = Vector2(min_w, 0) + return l + + +## Knopf in einem Container. +static func cbutton(parent: Node, text: String, size: Vector2, on_pressed: Callable, color = null) -> Button: + var b := button(parent, text, Rect2(Vector2.ZERO, size), on_pressed, color) + b.custom_minimum_size = size + return b + + +static func spacer(parent: Node, h: float) -> Control: + var c := Control.new() + c.custom_minimum_size = Vector2(0, h) + c.mouse_filter = Control.MOUSE_FILTER_IGNORE + parent.add_child(c) + return c + + +static func clear(node: Node) -> void: + for c in node.get_children(): + node.remove_child(c) + c.queue_free() + + +# --- Zeichenhilfen für _draw() --------------------------------------------------- + +static func text(ci: CanvasItem, s: String, size: int, color: Color, pos: Vector2, anchor: String = "topleft", bold: bool = false) -> void: + var font: Font = FONT_BOLD if bold else FONT + var dim := font.get_string_size(s, HORIZONTAL_ALIGNMENT_LEFT, -1, size) + var x := pos.x + var y := pos.y + match anchor: + "center": + x -= dim.x / 2 + y -= dim.y / 2 + "midtop": + x -= dim.x / 2 + "topright": + x -= dim.x + "midleft": + y -= dim.y / 2 + "midright": + x -= dim.x + y -= dim.y / 2 + "bottomleft": + y -= dim.y + "bottomright": + x -= dim.x + y -= dim.y + "midbottom": + x -= dim.x / 2 + y -= dim.y + ci.draw_string(font, Vector2(x, y + font.get_ascent(size)), s, HORIZONTAL_ALIGNMENT_LEFT, -1, size, color) + + +static func fit(s: String, bold: bool, size: int, max_w: float) -> String: + var font: Font = FONT_BOLD if bold else FONT + while font.get_string_size(s, HORIZONTAL_ALIGNMENT_LEFT, -1, size).x > max_w and s.length() > 3: + s = s.substr(0, s.length() - 2) + "…" + return s + + +static func border(ci: CanvasItem, rect: Rect2, color: Color, width: int, radius: int) -> void: + var sb := StyleBoxFlat.new() + sb.draw_center = false + sb.border_color = color + sb.set_border_width_all(width) + sb.set_corner_radius_all(radius) + ci.draw_style_box(sb, rect) + + +static func fill_elements(ci: CanvasItem, rect: Rect2, elements: Array, radius: int = 8) -> void: + var a: Color = Cards.ELEMENT_COLORS[elements[0]] + if elements.size() == 1: + ci.draw_style_box(box(a, radius), rect) + elif elements[0] == elements[1]: + # Doppeltes Element: gleiche Farbe mit zweitem, hellem Innenrahmen + ci.draw_style_box(box(a, radius), rect) + border(ci, rect.grow(-5), lighter(a, 0.27), 2, maxi(2, radius - 3)) + else: + var b: Color = Cards.ELEMENT_COLORS[elements[1]] + var half := floorf(rect.size.x / 2) + var left := StyleBoxFlat.new() + left.bg_color = a + left.corner_radius_top_left = radius + left.corner_radius_bottom_left = radius + var right := StyleBoxFlat.new() + right.bg_color = b + right.corner_radius_top_right = radius + right.corner_radius_bottom_right = radius + ci.draw_style_box(left, Rect2(rect.position, Vector2(half, rect.size.y))) + ci.draw_style_box(right, Rect2(rect.position + Vector2(half, 0), Vector2(rect.size.x - half, rect.size.y))) + + +static func rules_text() -> String: + var lines := [ + "Ziel: Besiege alle anderen. Du verlierst, wenn dein Leben auf 0 fällt.", + "Du spielst gegen 1 bis 5 Magier, jeder gegen jeden, alle nach denselben Regeln:", + "%d Leben, pro Zug 1 Energie mehr (höchstens 10) und 1 Karte. Die Zugreihenfolge wird ausgelost." % Game.START_LIFE, + "Wer nicht beginnt, startet mit einer Karte mehr und hat im ersten Zug 1 Energie extra.", + "Fallen liegen verdeckt (höchstens 2) und lösen aus, wenn dich jemand angreift oder ein Wesen ausspielt.", + "", + "Karten kosten Energie. Wesen kommen aufs Feld (max. 5) und greifen ab dem nächsten Zug an.", + "Zauber wirken sofort. Ein Wesen greift ein gegnerisches Wesen oder direkt den Gegner an;", + "beide Seiten verursachen ihren Angriffswert als Schaden.", + "", + "Elemente: Feuer (Schaden), Wasser (Kontrolle), Erde (Zähigkeit), Luft (Tempo).", + "Kombos verbinden zwei Elemente, auch das gleiche doppelt (Feuer+Feuer = Inferno).", + "Kombokarten sind seltener und stärker, Dreifach-Kombos sind mythisch. Ein Deck darf höchstens 2 Elemente enthalten.", + Cards.RESONANCE_TEXT, + "Feldkombo: Spielst du ein Wesen neben ein eigenes Wesen mit anderem Element, löst eine Kombo aus (eine je Ausspielen):", + " Dampf friert das stärkste gegnerische Wesen, Lava macht 1 Schaden an alle gegnerischen Wesen, Blitz 2 Schaden", + " an den schwächsten Gegner, Schlamm heilt dich um 3, Sturm zieht 1 Karte, Sand gibt dem neuen Wesen Schild.", + "", + "Schlüsselwörter:", + ] + for k in Cards.KEYWORDS: + lines.append(" %s: %s" % [k, Cards.KEYWORD_HELP[k]]) + lines.append("") + lines.append("Deck: genau %d Karten, höchstens %dx dieselbe Karte." % [Game.DECK_SIZE, Game.MAX_COPIES]) + lines.append("Leeres Deck: jede weitere gezogene Karte verursacht steigenden Schaden.") + lines.append("Booster: 5 Karten für 100 Münzen, mindestens eine seltene. Siege bringen Münzen.") + lines.append("") + lines.append("Werkstatt: Karten zerlegen bringt Staub, aus Staub entstehen neue Karten. Fünf Deck-Slots.") + lines.append("Lokal zu mehreren: bis zu vier Menschen am selben Rechner, dazu KI, ohne Münzen.") + lines.append("Mulligan: Im ersten eigenen Zug darfst du einmal Handkarten zurücklegen und nachziehen.") + lines.append("Kampagnen-Bosse haben ein Merkmal (★), zum Beispiel stärkere Feuerwesen. Netzwerkspiel im lokalen Netz.") + lines.append("Steuerung: Linksklick spielt Karten und wählt Ziele, Rechtsklick oder Esc bricht ab, Leertaste beendet den Zug, 1 bis 9 spielen Handkarten.") + return "\n".join(lines) + + +# --- Kartensymbole (prozedural, je Element und Kartenart) -------------------------- + +static func glyph(ci: CanvasItem, card, center: Vector2, size: float) -> void: + var variant := absi(hash(card.id)) % 3 + var col := lighter(Cards.ELEMENT_COLORS[card.elements[0]], 0.38) + col.a = 0.95 + if card.is_trap(): + # Falle: Kreuz im Kreis + ci.draw_arc(center, size * 0.5, 0, TAU, 32, col, maxf(2, size * 0.08)) + var d := size * 0.28 + ci.draw_line(center + Vector2(-d, -d), center + Vector2(d, d), col, maxf(2, size * 0.1)) + ci.draw_line(center + Vector2(-d, d), center + Vector2(d, -d), col, maxf(2, size * 0.1)) + return + if card.kind == "Zauber": + _star(ci, center, size * 0.55, Color(col, 0.35)) + var elems: Array = card.elements + if elems.size() >= 2 and elems[0] != elems[1]: + _element_glyph(ci, elems[0], center + Vector2(-size * 0.28, 0), size * 0.62, variant, col) + var col2 := lighter(Cards.ELEMENT_COLORS[elems[1]], 0.38) + col2.a = 0.95 + _element_glyph(ci, elems[1], center + Vector2(size * 0.28, 0), size * 0.62, variant, col2) + else: + _element_glyph(ci, elems[0], center, size, variant, col) + if elems.size() >= 2: + ci.draw_arc(center, size * 0.6, 0, TAU, 32, Color(col, 0.7), 2) + if elems.size() >= 3: + ci.draw_arc(center, size * 0.72, 0, TAU, 40, Color(col, 0.5), 2) + + +static func _star(ci: CanvasItem, c: Vector2, r: float, col: Color) -> void: + var pts := PackedVector2Array() + for i in 8: + var a := TAU * i / 8 - PI / 2 + var rr := r if i % 2 == 0 else r * 0.45 + pts.append(c + Vector2(cos(a), sin(a)) * rr) + ci.draw_colored_polygon(pts, col) + + +static func _element_glyph(ci: CanvasItem, element: String, c: Vector2, size: float, variant: int, col: Color) -> void: + var h := size / 2 + match element: + "Feuer": + var n := 1 + variant + for i in n: + var off := Vector2((i - (n - 1) / 2.0) * size * 0.32, 0) + var s := 1.0 if i == n / 2 else 0.7 + _flame(ci, c + off, h * s, col) + "Wasser": + for i in 2 + variant % 2: + var y := c.y + (i - 0.5) * size * 0.3 + for k in 3: + var x := c.x - size * 0.4 + k * size * 0.4 + ci.draw_arc(Vector2(x, y), size * 0.2, PI, TAU, 12, col, maxf(2, size * 0.09)) + "Erde": + var n := 1 + variant + for i in n: + var off := (i - (n - 1) / 2.0) * size * 0.4 + var s := 1.0 if i == n / 2 else 0.65 + var pts := PackedVector2Array([c + Vector2(off - h * s, h * 0.7), c + Vector2(off, -h * s), c + Vector2(off + h * s, h * 0.7)]) + ci.draw_colored_polygon(pts, col) + ci.draw_line(c + Vector2(-h, h * 0.7), c + Vector2(h, h * 0.7), col, maxf(2, size * 0.08)) + "Luft": + for i in 2 + variant: + var r := h * (1.0 - i * 0.28) + ci.draw_arc(c + Vector2(i * size * 0.06, 0), r, PI * 0.2 + i * 0.4, PI * 1.5 + i * 0.4, 20, col, maxf(2, size * 0.09)) + + +static func _flame(ci: CanvasItem, c: Vector2, h: float, col: Color) -> void: + var w := h * 0.75 + var pts := PackedVector2Array([ + c + Vector2(0, -h), c + Vector2(w * 0.55, -h * 0.25), c + Vector2(w * 0.4, h * 0.45), + c + Vector2(0, h), c + Vector2(-w * 0.4, h * 0.45), c + Vector2(-w * 0.55, -h * 0.25)]) + ci.draw_colored_polygon(pts, col) + var inner := PackedVector2Array([ + c + Vector2(0, -h * 0.35), c + Vector2(w * 0.25, h * 0.35), c + Vector2(0, h * 0.75), c + Vector2(-w * 0.25, h * 0.35)]) + ci.draw_colored_polygon(inner, Color(1.0, 0.9, 0.5, 0.75)) + + +## Dezenter Hintergrund: Farbverlauf und schräge Linien. +class Backdrop extends Control: + func _draw() -> void: + var sz := size + draw_rect(Rect2(Vector2.ZERO, sz), Style.BG) + var c := Vector2(sz.x * 0.5, sz.y * 0.35) + for i in range(8, 0, -1): + var r := sz.x * 0.09 * i + draw_circle(c, r, Color(0.16, 0.18, 0.26, 0.05)) + for k in range(-20, 40): + var x := k * 80.0 + draw_line(Vector2(x, 0), Vector2(x + sz.y * 0.6, sz.y), Color(1, 1, 1, 0.012), 1.0) diff --git a/scripts/ui/style.gd.uid b/scripts/ui/style.gd.uid new file mode 100644 index 0000000..7e72ec3 --- /dev/null +++ b/scripts/ui/style.gd.uid @@ -0,0 +1 @@ +uid://diaenhpjc2b3i diff --git a/scripts/ui/workshop_screen.gd b/scripts/ui/workshop_screen.gd new file mode 100644 index 0000000..fccf5ff --- /dev/null +++ b/scripts/ui/workshop_screen.gd @@ -0,0 +1,151 @@ +class_name WorkshopScreen +extends Control +## Werkstatt: Karten zerlegen (Staub) und herstellen. + +var app +var filter := "" +var search := "" +var selected: Cards.Card = null +var grid: CardGrid +var search_box: LineEdit +var dust_label: Label +var msg_label: Label +var preview_holder: Control +var info_label: Label +var b_dismantle: Button +var b_craft: Button +var b_extras: Button + + +func _ready() -> void: + Style.label(self, "Werkstatt", 30, Style.GOLD, Rect2(20, 8, 400, 40), "left", true) + Style.label(self, "Karte anklicken, dann zerlegen oder herstellen. Überschuss: alles über %d Kopien." % Game.MAX_COPIES, + 14, Style.MUTED, Rect2(240, 18, 600, 24)) + Style.button(self, "Alle", Rect2(20, 55, 60, 34), set_filter.bind("")) + for i in Cards.ELEMENTS.size(): + var e: String = Cards.ELEMENTS[i] + Style.button(self, e, Rect2(88 + i * 76, 55, 70, 34), set_filter.bind(e), Style.darker(Cards.ELEMENT_COLORS[e], 0.8)) + search_box = LineEdit.new() + search_box.position = Vector2(400, 55) + search_box.size = Vector2(200, 34) + search_box.placeholder_text = "Suche" + search_box.text_changed.connect(func(t: String): + search = t + refresh()) + add_child(search_box) + grid = CardGrid.new(Rect2(20, 100, CardGrid.COLS * (CardGrid.CW + CardGrid.GAP) + 10, 690)) + grid.card_clicked.connect(select) + add_child(grid) + Style.panel(self, Rect2(845, 50, 420, 680)) + dust_label = Style.label(self, "", 22, Style.BLUE, Rect2(860, 58, 390, 30), "left", true) + preview_holder = Control.new() + preview_holder.mouse_filter = Control.MOUSE_FILTER_IGNORE + add_child(preview_holder) + info_label = Style.label(self, "", 14, Style.MUTED, Rect2(860, 396, 390, 66), "center") + b_dismantle = Style.button(self, "", Rect2(860, 470, 390, 44), dismantle, Color("5a3c28")) + b_craft = Style.button(self, "", Rect2(860, 524, 390, 44), craft, Color("285a3c")) + b_extras = Style.button(self, "", Rect2(860, 600, 390, 44), dismantle_extras) + msg_label = Style.label(self, "", 15, Style.GREEN, Rect2(860, 660, 390, 48), "center") + Style.button(self, "Zurück", Rect2(1150, 740, 110, 44), func(): app.show_screen(MenuScreen.new())) + refresh() + + +func _input(event: InputEvent) -> void: + if event is InputEventKey and event.pressed and event.keycode == KEY_ESCAPE and not search_box.has_focus(): + app.show_screen(MenuScreen.new()) + + +func set_filter(e: String) -> void: + filter = e + refresh() + + +func cards() -> Array: + var out: Array = Cards.all().duplicate() + if filter != "": + out = out.filter(func(c): return filter in c.elements) + if search != "": + var q := search.to_lower() + out = out.filter(func(c): return q in c.name.to_lower() or q in c.text().to_lower() or q in c.combo().to_lower()) + return out + + +func select(card: Cards.Card) -> void: + selected = card + msg_label.text = "" + refresh() + + +func say(m: String, ok: bool) -> void: + msg_label.text = m + msg_label.add_theme_color_override("font_color", Style.GREEN if ok else Style.RED) + + +func dismantle() -> void: + if selected == null: + return + var err: String = app.profile.dismantle(selected.id) + if err == "": + app.sfx.play("click") + app.save() + say("%s zerlegt (+%d Staub)" % [selected.name, Profile.DUST_DISMANTLE[selected.rarity]], true) + else: + say(err, false) + refresh() + + +func craft() -> void: + if selected == null: + return + var err: String = app.profile.craft(selected.id) + if err == "": + app.sfx.play("play") + app.save() + var notes: Array[String] = app.profile.take_notices() + say("%s hergestellt" % selected.name + (" · " + " · ".join(notes) if not notes.is_empty() else ""), true) + else: + say(err, false) + refresh() + + +func dismantle_extras() -> void: + var got: int = app.profile.dismantle_extras() + if got > 0: + app.save() + say("Überschuss zerlegt: +%d Staub" % got, true) + else: + say("Kein Überschuss vorhanden", false) + refresh() + + +func refresh() -> void: + var p: Profile = app.profile + dust_label.text = "Staub: %d" % p.dust + grid.fill(cards(), + func(c): return "%dx" % p.collection.get(c.id, 0) if p.collection.get(c.id, 0) > 0 else "fehlt", + func(c): return p.collection.get(c.id, 0) == 0) + Style.clear(preview_holder) + if selected == null: + info_label.text = "Keine Karte gewählt" + b_dismantle.text = "Zerlegen" + b_craft.text = "Herstellen" + b_dismantle.disabled = true + b_craft.disabled = true + else: + var v := CardView.new(selected, Vector2(200, 280)) + v.position = Vector2(955, 100) + v.mouse_filter = Control.MOUSE_FILTER_IGNORE + preview_holder.add_child(v) + var owned: int = p.collection.get(selected.id, 0) + var st: Dictionary = p.card_stats.get(selected.id, {"played": 0, "games": 0, "wins": 0}) + info_label.text = "%s · %s\nIm Besitz: %dx · Gespielt %dx · %d Partien, %d Siege" % [ + selected.combo(), selected.rarity, owned, st.played, st.games, st.wins] + b_dismantle.text = "Zerlegen (+%d Staub)" % Profile.DUST_DISMANTLE[selected.rarity] + b_craft.text = "Herstellen (%d Staub)" % Profile.DUST_CRAFT[selected.rarity] + b_dismantle.disabled = owned == 0 + b_craft.disabled = p.dust < Profile.DUST_CRAFT[selected.rarity] + var extras := 0 + for cid in p.collection: + extras += maxi(0, p.collection[cid] - Game.MAX_COPIES) + b_extras.text = "Überschuss zerlegen (%d Karten)" % extras + b_extras.disabled = extras == 0 diff --git a/scripts/ui/workshop_screen.gd.uid b/scripts/ui/workshop_screen.gd.uid new file mode 100644 index 0000000..6ea27a9 --- /dev/null +++ b/scripts/ui/workshop_screen.gd.uid @@ -0,0 +1 @@ +uid://cf42h6bsh8lvg diff --git a/tests/dump_cards.gd b/tests/dump_cards.gd new file mode 100644 index 0000000..362bf4d --- /dev/null +++ b/tests/dump_cards.gd @@ -0,0 +1,11 @@ +extends SceneTree +## Schreibt den Kartenpool als JSON: godot --headless --path . -s tests/dump_cards.gd + + +func _initialize() -> void: + var list := Cards.all().map(func(c): return c.to_dict()) + var f := FileAccess.open("res://data/karten.json", FileAccess.WRITE) + f.store_string(JSON.stringify({"karten": list}, "\t", false)) + f.close() + print("%d Karten nach data/karten.json geschrieben" % list.size()) + quit() diff --git a/tests/dump_cards.gd.uid b/tests/dump_cards.gd.uid new file mode 100644 index 0000000..c664318 --- /dev/null +++ b/tests/dump_cards.gd.uid @@ -0,0 +1 @@ +uid://bdywlyx7noq6 diff --git a/tests/matchup.gd b/tests/matchup.gd new file mode 100644 index 0000000..19058f3 --- /dev/null +++ b/tests/matchup.gd @@ -0,0 +1,35 @@ +extends SceneTree +## Misst Deckarchetypen im Duell (beide gierig): wer beginnt, Mono gegen Paar. + +func deck(r: RandomNumberGenerator, mono: bool) -> Array: + var pool: Array = Cards.ELEMENTS.duplicate() + Game.shuffle(pool, r) + return Game.build_opponent_deck(r, [pool[0]] if mono else [pool[0], pool[1]]) + + +func duel(r: RandomNumberGenerator, first_mono: bool, second_mono: bool) -> bool: + var second := Game.Player.new("Gegner 1", deck(r, second_mono), false, Game.START_LIFE, "x") + var g := Game.new_battle_with(deck(r, first_mono), [second], r) + var guard := 0 + while g.winner == "" and guard < 300: + AI.take_turn(g, g.current(), true) + guard += 1 + return g.winner == "human" + + +func run(label: String, a_mono: bool, b_mono: bool, games: int, r: RandomNumberGenerator) -> void: + var wins := 0 + for i in games: + if duel(r, a_mono, b_mono): + wins += 1 + print("%-28s Startspieler gewinnt %3d%%" % [label, wins * 100 / games]) + + +func _initialize() -> void: + var r := RandomNumberGenerator.new() + r.seed = 5 + run("Paar gegen Paar", false, false, 200, r) + run("Mono gegen Mono", true, true, 200, r) + run("Paar (startet) gegen Mono", false, true, 200, r) + run("Mono (startet) gegen Paar", true, false, 200, r) + quit() diff --git a/tests/matchup.gd.uid b/tests/matchup.gd.uid new file mode 100644 index 0000000..828baba --- /dev/null +++ b/tests/matchup.gd.uid @@ -0,0 +1 @@ +uid://bu5hjcfuinhy8 diff --git a/tests/net_bot.gd b/tests/net_bot.gd new file mode 100644 index 0000000..9fb0798 --- /dev/null +++ b/tests/net_bot.gd @@ -0,0 +1,65 @@ +extends Node +## Test-Mitspieler: tritt einem Host bei und spielt einfache Züge. +## godot --path . tests/net_bot.tscn -- --ip=127.0.0.1 --name=Bot + +var net: Net +var seat := -1 +var game: Game +var t := 0.0 + + +func _ready() -> void: + var ip := "127.0.0.1" + var bot_name := "Bot" + for a in OS.get_cmdline_user_args(): + if a.begins_with("--ip="): + ip = a.substr(5) + if a.begins_with("--name="): + bot_name = a.substr(7) + net = Net.new() + net.name = "Net" + get_tree().root.add_child.call_deferred(net) + net.my_name = bot_name + net.my_deck = Profile.starter().deck.duplicate() + net.started.connect(func(s): seat = s) + net.snapshot_received.connect(_on_snapshot) + net.ended.connect(func(_r): get_tree().quit()) + await get_tree().process_frame + net.join(ip) + + +func _process(delta: float) -> void: + t += delta + if t > 180.0 or FileAccess.file_exists("user://bot_quit"): + net.leave() + get_tree().quit() + + +func _on_snapshot(snap: Dictionary) -> void: + game = Game.from_snapshot(snap) + if game.winner != "": + await get_tree().create_timer(1.0).timeout + get_tree().quit() + return + if game.current_idx != seat: + return + var me: Game.Player = game.players[seat] + if not me.mulligan_done and me.turns == 1: + net.send_action({"type": "mulligan", "hand": []}) + return + for i in me.hand.size(): + var card: Cards.Card = me.hand[i] + if game.can_play(me, card)[0] and card.target_type() == "": + net.send_action({"type": "play", "hand": i, "target": null}) + return + for cr in me.board: + if cr.can_attack(): + for e in game.enemies_of(me): + if game.can_attack(cr, e)[0]: + net.send_action({"type": "attack", "uid": cr.uid, "target": {"kind": "player", "index": game.players.find(e)}}) + return + for c in e.board: + if game.can_attack(cr, c)[0]: + net.send_action({"type": "attack", "uid": cr.uid, "target": {"kind": "creature", "uid": c.uid}}) + return + net.send_action({"type": "end"}) diff --git a/tests/net_bot.gd.uid b/tests/net_bot.gd.uid new file mode 100644 index 0000000..9ffe962 --- /dev/null +++ b/tests/net_bot.gd.uid @@ -0,0 +1 @@ +uid://dcbqt8ybdkhrb diff --git a/tests/net_bot.tscn b/tests/net_bot.tscn new file mode 100644 index 0000000..ae3b356 --- /dev/null +++ b/tests/net_bot.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3] + +[ext_resource type="Script" path="res://tests/net_bot.gd" id="1"] + +[node name="NetBot" type="Node"] +script = ExtResource("1") diff --git a/tests/run_headless.sh b/tests/run_headless.sh new file mode 100755 index 0000000..ba4be31 --- /dev/null +++ b/tests/run_headless.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# Führt Import und alle Headless-Prüfungen aus. Aufruf: tests/run_headless.sh [godot-binary] +set -euo pipefail +GODOT="${1:-godot}" +cd "$(dirname "$0")/.." +"$GODOT" --headless --path . --import > /dev/null 2>&1 || true +"$GODOT" --headless --path . -s tests/test_runner.gd 2>&1 | tee /tmp/dinger_tests.log | grep -E "FEHLER|Prüfungen|SCRIPT ERROR" || true +grep -q " 0 fehlgeschlagen" /tmp/dinger_tests.log diff --git a/tests/simulate.gd b/tests/simulate.gd new file mode 100644 index 0000000..85b7b88 --- /dev/null +++ b/tests/simulate.gd @@ -0,0 +1,43 @@ +extends SceneTree +## Balance-Simulation, die KI spielt auch den Menschen. Bei gleichen Regeln +## ist etwa 1/(Gegner+1) Siege zu erwarten: +## godot --headless --path . -s tests/simulate.gd + + +func _initialize() -> void: + var games := 100 + var r := RandomNumberGenerator.new() + r.seed = 0 + var starter := Profile.starter().deck_cards() + var random_deck := func(rr: RandomNumberGenerator) -> Array: + var pool: Array = Cards.ELEMENTS.duplicate() + Game.shuffle(pool, rr) + return Game.build_opponent_deck(rr, [pool[0], pool[1]]) + var t0 := Time.get_ticks_msec() + print("Alle gierig (Erwartung etwa 1/(Gegner+1)):") + for n in range(1, Game.MAX_OPPONENTS + 1): + _run("Zufallsdeck", random_deck, n, games, r, true, true) + print("Du mit Vorausschau, Gegner gierig:") + for n in [1, 2, 3]: + _run("Zufallsdeck", random_deck, n, games / 2, r, false, true) + print("Alle mit Vorausschau:") + _run("Starterdeck", func(_rr): return starter, 1, games / 2, r, false, false) + _run("Zufallsdeck", random_deck, 2, games / 4, r, false, false) + print("Dauer %.1f s" % ((Time.get_ticks_msec() - t0) / 1000.0)) + quit() + + +func _run(label: String, deck_fn: Callable, n_opp: int, games: int, r: RandomNumberGenerator, + human_greedy: bool, opp_greedy: bool) -> void: + var wins := 0 + var turns := 0 + for i in games: + var g := Game.new_battle(deck_fn.call(r), n_opp, r) + while g.winner == "": + var p := g.current() + AI.take_turn(g, p, human_greedy if p.is_human else opp_greedy) + assert(g.turn < 300, "Spiel endet nicht") + if g.winner == "human": + wins += 1 + turns += g.turn + print("%-26s vs %d: Siege %3d%% Ø Züge %.1f" % [label, n_opp, wins * 100 / games, float(turns) / games]) diff --git a/tests/simulate.gd.uid b/tests/simulate.gd.uid new file mode 100644 index 0000000..cf2706a --- /dev/null +++ b/tests/simulate.gd.uid @@ -0,0 +1 @@ +uid://bnbiq4krauuyq diff --git a/tests/test_runner.gd b/tests/test_runner.gd new file mode 100644 index 0000000..ee4944f --- /dev/null +++ b/tests/test_runner.gd @@ -0,0 +1,1198 @@ +extends SceneTree +## Regel-, KI- und Spielstand-Tests ohne Fenster: +## godot --headless --path . -s tests/test_runner.gd + +var passed := 0 +var failed := 0 + + +func check(cond: bool, msg: String) -> void: + if cond: + passed += 1 + else: + failed += 1 + printerr("FEHLER: " + msg) + + +func C(id: String) -> Cards.Card: + return Cards.by_id(id) + + +func setup(human_hand: Array = [], opp_hand: Array = [], n_opp: int = 1) -> Array: + var deck := [] + for i in 10: + deck.append(C("f_kobold")) + var human := Game.Player.new("Du", deck, true, 30) + var opps := [] + for i in n_opp: + opps.append(Game.Player.new("Gegner %d" % (i + 1), deck, false, 15)) + var r := RandomNumberGenerator.new() + r.seed = 0 + var g := Game.new(human, opps, r) + g.turn = 1 + human.max_energy = 10 + human.energy = 10 + for cid in human_hand: + human.hand.append(C(cid)) + for o in opps: + o.max_energy = 10 + o.energy = 10 + for cid in opp_hand: + o.hand.append(C(cid)) + return [g, human, opps] + + +var next_uid := 9000 + + +func put(p: Game.Player, cid: String, ready: bool = true) -> Game.Creature: + next_uid += 1 + var cr := Game.Creature.new(C(cid), p, next_uid) + cr.ready = ready + cr.attacks_left = cr.attacks_per_turn() if ready else 0 + p.board.append(cr) + return cr + + +func _initialize() -> void: + test_kartenpool() + test_kombos() + test_wesen_spielen() + test_flink() + test_waechter() + test_waechter_nur_eigener_besitzer() + test_kampf_beidseitig() + test_schild() + test_doppelschlag() + test_einfrieren() + test_zauber_ziel() + test_flaechenschaden() + test_zurueck_auf_hand() + test_buff_heilung() + test_limits() + test_leeres_deck() + test_gleiche_regeln() + test_zugreihenfolge() + test_tote_gegner() + test_jeder_gegen_jeden() + test_gegnerzahl() + test_sieg_niederlage() + test_deckregeln() + test_gegnerdeck() + test_booster() + test_spielstand() + test_resonanz() + test_feldkombos() + test_schild_effekt_und_dreifach() + test_kopie() + test_ki_lethal() + test_ki_besser_als_gierig() + test_ki_spiele_enden() + test_spielstand_migration() + test_erfolge_und_tagesaufgabe() + test_kampagne() + test_fallen() + test_ki_sieht_fallen_nicht() + test_hotseat() + test_zufallssamen() + test_deck_slots_und_werkstatt() + test_spielstand_sicherung() + test_mulligan() + test_merkmale() + test_ki_zwei_schritte() + test_snapshot() + test_statistik_pity_tagesaufgaben() + test_deck_umbenennen_und_auffuellen() + test_neue_fallen() + test_kapitel_zwei_und_merkmalwahl() + test_herausforderung_und_bestenliste() + print("%d Prüfungen bestanden, %d fehlgeschlagen" % [passed, failed]) + quit(1 if failed > 0 else 0) + + +func test_kartenpool() -> void: + check(Cards.all().size() == 106, "106 Karten") + for key in Cards.COMBOS: + var found: bool = Cards.all().any(func(c): return c.is_combo() and Cards.combo_key(c.elements) == key) + check(found, "Kombo vorhanden: " + key) + for e in Cards.ELEMENTS: + check(Cards.all().any(func(c): return c.elements == [e]), "Element vorhanden: " + e) + for c in Cards.all(): + check(c.rarity in Cards.RARITIES, "Seltenheit " + c.id) + check(not c.is_creature() or c.health > 0, "Leben " + c.id) + check(C("el_koenig").text() == "Wächter, Flink, Schild. Beim Ausspielen: Alle befreundeten Wesen erhalten +1/+1.", "Kartentext") + check(C("f_funke").text() == "2 Schaden an ein Ziel.", "Zaubertext") + check(C("ww_eiszeit").text() == "Friere alle gegnerischen Wesen ein, Ziehe 1 Karte.", "Eiszeit-Text") + + +func test_kombos() -> void: + check(Cards.combo_name(["Feuer", "Feuer"]) == "Inferno", "Feuer+Feuer = Inferno") + check(Cards.combo_name(["Luft", "Feuer"]) == "Blitz", "Luft+Feuer = Blitz") + check(C("ff_phoenix").is_combo() and C("ff_phoenix").combo() == "Inferno", "Phönix ist Inferno") + check(not C("f_funke").is_combo(), "Funke keine Kombo") + + +func test_wesen_spielen() -> void: + var s := setup(["f_wolf"]) + var g: Game = s[0] + var h: Game.Player = s[1] + check(g.play_card(h, C("f_wolf")) == "", "Wolf spielen") + check(h.energy == 8 and h.board.size() == 1, "Energie bezahlt") + check(not h.board[0].can_attack(), "Erschöpfung") + g.end_turn() + g.end_turn() + check(h.board[0].can_attack(), "bereit im nächsten Zug") + + +func test_flink() -> void: + var s := setup(["l_falke"]) + var g: Game = s[0] + var h: Game.Player = s[1] + var o: Game.Player = s[2][0] + g.play_card(h, C("l_falke")) + check(g.attack(h.board[0], o) == "", "Flink greift sofort an") + check(o.life == 12, "Falke 3 Schaden") + + +func test_waechter() -> void: + var s := setup() + var g: Game = s[0] + var h: Game.Player = s[1] + var o: Game.Player = s[2][0] + var a := put(h, "f_wolf") + var w := put(o, "e_wall") + check(g.attack(a, o) != "", "Wächter blockt Angriff auf Held") + check(g.attack(a, w) == "", "Wächter angreifen") + check(w.health == 1 and a.health == 2, "Schaden verrechnet") + + +func test_waechter_nur_eigener_besitzer() -> void: + var s := setup([], [], 2) + var g: Game = s[0] + var h: Game.Player = s[1] + var a := put(h, "f_wolf") + put(s[2][0], "e_wall") + check(g.attack(a, s[2][1]) == "" and s[2][1].life == 12, "Wächter schützt nur Besitzer") + + +func test_kampf_beidseitig() -> void: + var s := setup() + var g: Game = s[0] + var h: Game.Player = s[1] + var o: Game.Player = s[2][0] + var a := put(h, "f_asche") + var d := put(o, "w_reiter") + g.attack(a, d) + check(not (d in o.board) and not (a in h.board), "beide sterben") + check("Aschekrieger stirbt." in g.log, "Log") + + +func test_schild() -> void: + var s := setup() + var g: Game = s[0] + var h: Game.Player = s[1] + var o: Game.Player = s[2][0] + var sh := put(o, "ee_bastion") + var a := put(h, "f_asche") + g.attack(a, sh) + check(sh.health == 7 and not sh.shield, "Schild blockt einmal") + var b := put(h, "f_wolf") + g.attack(b, sh) + check(sh.health == 4, "zweiter Schaden zählt") + + +func test_doppelschlag() -> void: + var s := setup() + var g: Game = s[0] + var h: Game.Player = s[1] + var o: Game.Player = s[2][0] + var a := put(h, "l_schlange") + g.attack(a, o) + g.attack(a, o) + check(o.life == 11, "zwei Angriffe") + check(g.attack(a, o) != "", "kein dritter Angriff") + + +func test_einfrieren() -> void: + var s := setup([], ["w_eis"]) + var g: Game = s[0] + var h: Game.Player = s[1] + var o: Game.Player = s[2][0] + var a := put(h, "f_wolf") + g.end_turn() + check(g.play_card(o, C("w_eis"), a) == "", "Eis spielen") + check(a.frozen, "eingefroren") + g.end_turn() + check(not a.frozen and not a.can_attack(), "taut auf, setzt aus") + g.end_turn() + g.end_turn() + check(a.can_attack(), "wieder bereit") + + +func test_zauber_ziel() -> void: + var s := setup(["w_eis", "f_funke"]) + var g: Game = s[0] + var h: Game.Player = s[1] + var o: Game.Player = s[2][0] + check(not g.can_play(h, C("w_eis"))[0], "Eis ohne Ziel") + check(g.can_play(h, C("f_funke"))[0], "Funke mit Held als Ziel") + g.play_card(h, C("f_funke"), o) + check(o.life == 13, "2 Schaden") + + +func test_flaechenschaden() -> void: + var s := setup(["ff_phoenix"], [], 2) + var g: Game = s[0] + var h: Game.Player = s[1] + var o1: Game.Player = s[2][0] + var o2: Game.Player = s[2][1] + put(o1, "f_kobold") + put(o2, "e_golem") + g.play_card(h, C("ff_phoenix")) + check(o1.life == 11 and o2.life == 11, "Helden 4 Schaden") + check(o1.board.is_empty() and o2.board[0].health == 1, "Wesen getroffen") + + +func test_zurueck_auf_hand() -> void: + var s := setup(["l_stoss"]) + var g: Game = s[0] + var h: Game.Player = s[1] + var o: Game.Player = s[2][0] + var d := put(o, "e_troll") + g.play_card(h, C("l_stoss"), d) + check(o.board.is_empty() and C("e_troll") in o.hand, "zurück auf Hand") + + +func test_buff_heilung() -> void: + var s := setup(["e_haerten", "e_baum"]) + var g: Game = s[0] + var h: Game.Player = s[1] + var a := put(h, "f_wolf") + h.life = 20 + g.play_card(h, C("e_haerten"), a) + check(a.attack == 5 and a.health == 4, "+2/+2") + g.play_card(h, C("e_baum")) + check(h.life == 25, "Heilung") + + +func test_limits() -> void: + var s := setup(["f_kobold"]) + var g: Game = s[0] + var h: Game.Player = s[1] + for i in Game.MAX_BOARD: + put(h, "f_kobold") + check(g.can_play(h, C("f_kobold"))[1] == "Dein Feld ist voll", "Feld voll") + h.hand = [] + for i in Game.MAX_HAND: + h.hand.append(C("f_kobold")) + g.draw(h) + check(h.hand.size() == Game.MAX_HAND, "Hand voll verbrennt") + + +func test_leeres_deck() -> void: + var s := setup() + var g: Game = s[0] + var h: Game.Player = s[1] + h.deck = [] + g.draw(h, 3) + check(h.life == 30 - 6, "Ermüdung 1+2+3") + + +func test_gleiche_regeln() -> void: + var r := RandomNumberGenerator.new() + r.seed = 0 + var g := Game.new_battle(Profile.starter().deck_cards(), 3, r) + var first: Game.Player = g.players[0] + check(g.current() == first and first.max_energy == 1 and first.energy == 1, "Startspieler: 1 Energie, kein Bonus") + check(first.hand.size() == Game.START_HAND + 1, "Startspieler 5 Handkarten") + for p in g.players: + check(p.life == Game.START_LIFE, "gleiches Leben") + if p != first: + check(p.hand.size() == Game.START_HAND + 1 and p.start_bonus == 1, "Nachzieher: Karte mehr, Bonus offen") + g.end_turn() + var second: Game.Player = g.players[1] + check(g.current() == second and second.max_energy == 1 and second.energy == 2, "Nachzieher: 1 Energie plus Ausgleich") + check(second.hand.size() == Game.START_HAND + 2, "Nachzieher 6 Handkarten nach dem Ziehen") + for i in 4: + g.end_turn() + check(g.current() == second and second.energy == 2 and second.max_energy == 2, "Ausgleich nur einmal") + + +func test_zugreihenfolge() -> void: + var starters := {} + for seed in 12: + var r := RandomNumberGenerator.new() + r.seed = seed + var g := Game.new_battle(Profile.starter().deck_cards(), 2, r) + starters[g.players[0].name] = true + check(g.players.size() == 3 and g.human in g.players and g.opponents.size() == 2, "alle am Tisch") + for i in g.players.size(): + check(g.players[i].order == i, "Reihenfolge nummeriert") + check(g.log[0].begins_with("Zugreihenfolge:"), "Reihenfolge im Verlauf") + var g2 := g.clone() + check(g2.players.map(func(p): return p.name) == g.players.map(func(p): return p.name), "Kopie behält Reihenfolge") + check(starters.size() > 1, "Startspieler wechselt (%d verschiedene)" % starters.size()) + + +func test_tote_gegner() -> void: + var s := setup([], [], 2) + var g: Game = s[0] + s[2][0].life = 0 + g.end_turn() + check(g.current() == s[2][1], "toter Gegner übersprungen") + g.end_turn() + check(g.current() == s[1] and g.turn == 2, "zurück beim Spieler, Zug 2") + + +func test_jeder_gegen_jeden() -> void: + var s := setup([], [], 2) + var g: Game = s[0] + var h: Game.Player = s[1] + var o1: Game.Player = s[2][0] + var o2: Game.Player = s[2][1] + check(g.enemies_of(o1) == [h, o2], "Gegner bekämpft Spieler und anderen Gegner") + check(g.enemies_of(h) == [o1, o2], "Spieler bekämpft alle Gegner") + g.end_turn() + o1.hand = [] + o1.mulligan_done = true + var a := put(o1, "f_wolf") + check(g.can_attack(a, o2)[0], "Gegner darf Gegner angreifen") + check(g.attack(a, o2) == "" and o2.life == 12, "Gegner trifft Gegner") + var act := AI.choose_action(g, o1) + check(act.type == "end", "KI-Zug endet ohne weitere Aktion") + o2.life = 2 + var b := put(o1, "f_kobold") + check(AI.choose_action(g, o1).target == o2, "KI nutzt Lethal gegen anderen Gegner") + + +func test_gegnerzahl() -> void: + var r := RandomNumberGenerator.new() + r.seed = 2 + for n in range(1, Game.MAX_OPPONENTS + 1): + var g := Game.new_battle(Profile.starter().deck_cards(), n, r) + check(g.opponents.size() == n, "%d Gegner" % n) + check(g.players.all(func(o): return o.life == Game.START_LIFE), "gleiches Leben bei %d" % n) + check(g.players[0].max_energy == 1 and g.current() == g.players[0], "Startspieler bei %d" % n) + check(g.human.hand.size() == Game.START_HAND + 1, "Handkarten bei %d" % n) + check(Profile.REWARD_WIN.has(n), "Belohnung bei %d" % n) + + +func test_sieg_niederlage() -> void: + var s := setup([], [], 2) + var g: Game = s[0] + g.damage(s[2][0], 99) + g.check_end() + check(g.winner == "", "noch offen") + g.damage(s[2][1], 99) + g.check_end() + check(g.winner == "human", "Sieg") + var s2 := setup() + var g2: Game = s2[0] + g2.damage(s2[1], 30) + g2.check_end() + check(g2.winner == "opponents", "Niederlage") + + +func test_deckregeln() -> void: + var starter := Profile.starter().deck_cards() + check(Game.validate_deck(starter)[0], "Starterdeck gültig") + var d := [] + for i in 19: + d.append(C("f_kobold")) + check(not Game.validate_deck(d)[0], "19 Karten ungültig") + d = [] + for i in 4: + d.append(C("f_kobold")) + for i in 16: + d.append(C("f_wolf")) + check(not Game.validate_deck(d)[0], "4 Kopien ungültig") + d = [] + for cid in ["f_kobold", "f_wolf", "f_asche", "f_funke", "w_geist", "w_reiter"]: + for i in 3: + d.append(C(cid)) + d.append(C("e_wall")) + d.append(C("e_wall")) + check("Elemente" in Game.validate_deck(d)[1], "3 Elemente ungültig") + check(not Game.validate_deck(starter, {"f_kobold": 1})[0], "nicht besessen") + + +func test_gegnerdeck() -> void: + var r := RandomNumberGenerator.new() + r.seed = 1 + for e in Cards.ELEMENTS: + var deck := Game.build_opponent_deck(r, [e]) + check(Game.validate_deck(deck)[0], "Mono-Gegnerdeck gültig: " + e) + check(Game.deck_elements(deck) == [e], "nur Element " + e) + check(Game.validate_deck(Game.build_opponent_deck(r, ["Feuer", "Luft"]))[0], "Zwei-Element-Gegnerdeck") + + +func test_booster() -> void: + var r := RandomNumberGenerator.new() + r.seed = 3 + for i in 50: + var cards := Profile.roll_booster(r) + check(cards.size() == 5, "5 Karten") + check(cards.any(func(c): return c.rarity != "gewöhnlich"), "mindestens eine seltene") + var p := Profile.new() + p.coins = Profile.BOOSTER_COST + var got := p.open_booster(r) + check(p.coins == 0 and got.size() == 5, "Booster kostet 100") + var total := 0 + for cid in p.collection: + total += p.collection[cid] + check(total == 5, "Sammlung +5") + check(p.open_booster(r).is_empty(), "ohne Münzen kein Booster") + + +func test_spielstand() -> void: + var path := "user://test_spielstand.json" + var abs := ProjectSettings.globalize_path(path) + for suffix in ["", ".bak"]: + if FileAccess.file_exists(path + suffix): + DirAccess.remove_absolute(abs + suffix) + var p := Profile.load_or_new(path) + check(p.deck_valid()[0], "Starterprofil gültig") + check(FileAccess.file_exists(path), "Datei angelegt") + p.coins = 999 + p.save(path) + var p2 := Profile.load_or_new(path) + check(p2.coins == 999 and p2.deck.size() == 20 and p2.collection.size() == 39, "geladen") + for suffix in ["", ".bak"]: + if FileAccess.file_exists(path + suffix): + DirAccess.remove_absolute(abs + suffix) + + +func test_ki_lethal() -> void: + var s := setup() + var g: Game = s[0] + var h: Game.Player = s[1] + var o: Game.Player = s[2][0] + o.life = 3 + var a := put(h, "f_asche") + put(o, "w_reiter") + var act := AI.choose_action(g, h) + check(act.type == "attack" and act.creature == a and act.target == o, "KI nutzt Lethal") + + +func test_ki_spiele_enden() -> void: + var r := RandomNumberGenerator.new() + r.seed = 7 + for n in [1, 3, 5]: + for i in 6: + var pool: Array = Cards.ELEMENTS.duplicate() + Game.shuffle(pool, r) + var g := Game.new_battle(Game.build_opponent_deck(r, [pool[0], pool[1]]), n, r) + var guard := 0 + while g.winner == "" and guard < 300: + AI.take_turn(g, g.current(), i % 2 == 0) + guard += 1 + check(g.winner != "", "Spiel endet (%d Gegner)" % n) + + +func test_resonanz() -> void: + var s := setup(["f_wolf", "f_kobold", "e_wall"]) + var g: Game = s[0] + var h: Game.Player = s[1] + var o: Game.Player = s[2][0] + g.play_card(h, C("f_wolf")) + check(h.board[0].power() == 3, "allein keine Resonanz") + g.play_card(h, C("f_kobold")) + check(h.board[0].power() == 4 and h.board[1].power() == 3, "Feuer+Feuer: beide +1") + g.play_card(h, C("e_wall")) + check(h.board[2].power() == 0, "Erde allein: kein Bonus") + check(C("f_wolf").text() == "" and Cards.RESONANCE_TEXT.begins_with("Resonanz"), "Resonanz ist Regel, kein Kartentext") + var third := put(h, "f_asche") + g.update_resonance() + check(h.board[0].power() == 5 and third.power() == 6, "drei Feuer-Wesen: +2") + put(h, "f_kobold") + put(h, "f_kobold") + put(h, "f_kobold") + g.update_resonance() + check(h.board[0].power() == 7, "Resonanz höchstens +4") + for i in [1, 3, 4, 5, 6]: + h.board[i].health = 0 + g.cleanup() + check(h.board[0].power() == 3, "Resonanz sinkt mit den Partnern") + + +func test_feldkombos() -> void: + # Dampf: Feuer neben Wasser friert das stärkste gegnerische Wesen ein + var s := setup(["w_reiter"]) + var g: Game = s[0] + var h: Game.Player = s[1] + var o: Game.Player = s[2][0] + put(h, "f_wolf") + var weak := put(o, "f_kobold") + var strong := put(o, "e_troll") + g.play_card(h, C("w_reiter")) + check(strong.frozen and not weak.frozen, "Dampf friert das stärkste Wesen") + check(g.log.any(func(l): return l.begins_with("Feldkombo Dampf")), "Feldkombo im Verlauf") + # Lava: 1 Schaden an alle gegnerischen Wesen + s = setup(["e_golem"]) + g = s[0] + h = s[1] + o = s[2][0] + put(h, "f_wolf") + var k := put(o, "f_kobold") + g.play_card(h, C("e_golem")) + check(not (k in o.board), "Lava tötet den 2/1 Kobold") + # Blitz: 2 Schaden an den schwächsten Gegner + s = setup(["l_wind"], [], 2) + g = s[0] + h = s[1] + put(h, "f_wolf") + s[2][1].life = 5 + g.play_card(h, C("l_wind")) + check(s[2][1].life == 3 and s[2][0].life == 15, "Blitz trifft den schwächsten Gegner") + # Schlamm heilt, Sturm zieht, Sand gibt Schild + s = setup(["e_wall", "l_wind", "w_reiter"]) + g = s[0] + h = s[1] + h.life = 20 + g.play_card(h, C("w_reiter")) + g.play_card(h, C("e_wall")) + check(h.life == 23, "Schlamm heilt um 3") + var hand_before := h.hand.size() + g.play_card(h, C("l_wind")) + check(h.hand.size() == hand_before, "Sturm zieht 1 (eine gespielt, eine gezogen)") + check(not h.board[2].shield, "nur eine Feldkombo je Ausspielen") + s = setup(["l_wind"]) + g = s[0] + h = s[1] + put(h, "e_wall") + g.play_card(h, C("l_wind")) + check(h.board[1].shield, "Sand: neues Wesen hat Schild") + # Gleiche Elemente lösen keine Feldkombo aus + s = setup(["f_kobold"]) + g = s[0] + h = s[1] + put(h, "f_wolf") + g.play_card(h, C("f_kobold")) + check(not g.log.any(func(l): return l.begins_with("Feldkombo")), "Feuer+Feuer ist Resonanz, keine Feldkombo") + # Kombokarte bringt ihr zweites Element mit + s = setup(["fw_wolke", "fe_golem"]) + g = s[0] + h = s[1] + o = s[2][0] + put(h, "w_reiter") + var t := put(o, "e_troll") + g.play_card(h, C("fe_golem")) + check(t.frozen, "Lava-Wesen neben Wasser löst Dampf aus") + + +func test_schild_effekt_und_dreifach() -> void: + var s := setup(["e_steinhaut", "fff_sonne"]) + var g: Game = s[0] + var h: Game.Player = s[1] + var o: Game.Player = s[2][0] + var a := put(h, "f_wolf") + g.play_card(h, C("e_steinhaut"), a) + check(a.shield, "Steinhaut gibt Schild") + var sonne := C("fff_sonne") + check(sonne.rarity == "mythisch" and sonne.combo() == "Sonne" and sonne.is_combo(), "Dreifach-Kombo Sonne") + check(Cards.of_rarity("mythisch").size() == 4, "vier mythische Karten") + var troll := put(o, "e_troll") + g.play_card(h, C("fff_sonne")) + check(o.life == 10 and troll.health == 1, "Kern der Sonne: 5 Schaden an alle") + check(Cards.combo_name(["Erde", "Erde", "Erde"]) == "Gebirge", "Dreifach-Name") + + +func test_kopie() -> void: + var s := setup(["f_wolf"]) + var g: Game = s[0] + var h: Game.Player = s[1] + var o: Game.Player = s[2][0] + var a := put(h, "f_asche") + var g2 := g.clone() + var a2 := g2.find_creature(a.uid) + check(a2 != null and a2 != a and a2.owner() == g2.players[0], "Wesen kopiert mit neuem Besitzer") + g2.attack(a2, g2.players[1]) + check(g2.players[1].life == 11 and o.life == 15, "Kopie verändert das Original nicht") + g2.play_card(g2.players[0], C("f_wolf")) + check(h.hand.size() == 1 and g2.players[0].hand.is_empty(), "Hand der Kopie unabhängig") + check(g2.log.is_empty() and g2.events.is_empty(), "Kopie schreibt keinen Verlauf") + + +func test_ki_besser_als_gierig() -> void: + var r := RandomNumberGenerator.new() + r.seed = 11 + var smart := 0 + var games := 40 + for i in games: + var pool: Array = Cards.ELEMENTS.duplicate() + Game.shuffle(pool, r) + var g := Game.new_battle(Game.build_opponent_deck(r, [pool[0], pool[1]]), 1, r) + # abwechselnd beginnt die schlaue oder die gierige KI + var smart_is_human := i % 2 == 0 + var guard := 0 + while g.winner == "" and guard < 300: + var p := g.current() + AI.take_turn(g, p, p.is_human != smart_is_human) + guard += 1 + if (g.winner == "human") == smart_is_human: + smart += 1 + check(smart >= games / 2, "Vorausschau-KI ist mindestens so gut wie die gierige (%d von %d)" % [smart, games]) + + +func test_spielstand_migration() -> void: + var alt := {"coins": 300, "collection": {"f_kobold": 2, "unbekannt": 1}, "deck": ["f_kobold", "f_kobold"]} + var p := Profile.from_dict(alt) + check(p.coins == 300 and p.collection == {"f_kobold": 2} and p.deck.size() == 2, "Version 1 gelesen") + check(p.stats.games == 0 and p.achievements.is_empty() and p.campaign_stage == 0, "Standardwerte ergänzt") + check(p.settings.volume == 0.8 and p.settings.animations, "Einstellungen Standard") + p.stats.wins = 3 + p.achievements.append("erster_sieg") + p.campaign_stage = 2 + p.settings.volume = 0.3 + var d := p.to_dict() + check(d.version == Profile.SAVE_VERSION, "Version gespeichert") + var p2 := Profile.from_dict(JSON.parse_string(JSON.stringify(d))) + check(p2.stats.wins == 3 and p2.achievements == ["erster_sieg"] and p2.campaign_stage == 2, "Version 2 gelesen") + check(is_equal_approx(p2.settings.volume, 0.3), "Einstellungen gelesen") + + +func test_erfolge_und_tagesaufgabe() -> void: + Profile.today_override = "2026-09-16" + var p := Profile.starter() + var coins := p.coins + var reward := p.record_battle(true, 1, p.deck_cards()) + check(reward == Profile.REWARD_WIN[1], "Duell-Belohnung") + check("erster_sieg" in p.achievements and "duellant" in p.achievements, "Erfolge Erster Sieg und Duellant") + check(not ("tischherr" in p.achievements), "Herr des Tisches noch offen") + check(p.coins == coins + reward + 100 + (p.daily_task().reward if p.daily.done else 0), "Münzen inklusive Erfolge") + check(p.notices.size() >= 2, "Meldungen vorhanden") + p.take_notices() + check(p.notices.is_empty(), "Meldungen abgeholt") + check(p.daily.date == "2026-09-16" and p.daily.task != "", "Tagesaufgabe gesetzt") + # Tagesaufgabe erfüllen (je nach Aufgabe: Sieg, zwei Kämpfe oder Booster) + var task := p.daily_task() + if not p.daily.done: + if task.kind == "game": + p.record_battle(false, 2, p.deck_cards()) + elif task.kind == "booster": + p.coins = 100 + p.open_booster() + check(p.daily.done, "Tagesaufgabe erfüllt: " + task.text) + var progress_before: int = p.daily.progress + p.record_battle(true, 1, p.deck_cards()) + check(p.daily.progress == progress_before, "erfüllte Aufgabe zählt nicht weiter") + Profile.today_override = "2026-09-17" + p.refresh_daily() + check(p.daily.date == "2026-09-17" and not p.daily.done and p.daily.progress == 0, "neuer Tag, neue Aufgabe") + Profile.today_override = "" + # Mono-Deck-Erfolg + var mono := [] + for cid in ["f_funke", "f_kobold", "f_wolf", "f_feuerball", "f_asche", "f_glutpfeil", "f_elementar"]: + for i in 3: + mono.append(Cards.by_id(cid)) + mono = mono.slice(0, 20) + p.record_battle(true, 3, mono) + check("elementarist" in p.achievements and "tischherr" in p.achievements, "Elementarist und Herr des Tisches") + check(p.stats.wins == 3 and p.stats.wins_by_opp["1"] == 2, "Statistik") + + +func test_kampagne() -> void: + var r := RandomNumberGenerator.new() + r.seed = 4 + check(Campaign.STAGES.size() == 10, "zehn Stufen") + var opps := Campaign.opponents(4, r) + check(opps.size() == 3 and opps[0].name == "Vulkar" and opps[0].title == "Herr der Lava", "Stufe 5: Vulkar mit 2 Begleitern") + check(Game.deck_elements(opps[0].deck).all(func(e): return e in ["Feuer", "Erde"]), "Boss-Deck aus seinen Elementen") + var g := Game.new_battle_with(Profile.starter().deck_cards(), opps, r) + check(g.opponents.size() == 3 and g.human.life == Game.START_LIFE, "Kampagnenkampf gestartet") + var p := Profile.starter() + var reward := p.record_battle(true, 1, p.deck_cards(), 0) + check(p.campaign_stage == 1 and reward == Campaign.STAGES[0].reward, "Stufe 1 abgeschlossen") + reward = p.record_battle(true, 1, p.deck_cards(), 0) + check(p.campaign_stage == 1 and reward == Profile.REWARD_WIN[1], "Wiederholung gibt normale Belohnung") + reward = p.record_battle(false, 2, p.deck_cards(), 1) + check(p.campaign_stage == 1 and reward == Profile.REWARD_LOSS, "Niederlage schaltet nichts frei") + p.campaign_stage = 9 + p.record_battle(true, 5, p.deck_cards(), 9) + check(p.campaign_stage == 10 and "kampagnenheld" in p.achievements, "Kampagne abgeschlossen") + var sim := Game.new_battle_with(Profile.starter().deck_cards(), Campaign.opponents(0, r), r) + var guard := 0 + while sim.winner == "" and guard < 300: + AI.take_turn(sim, sim.current(), true) + guard += 1 + check(sim.winner != "", "Kampagnenduell endet") + + +func test_fallen() -> void: + var s := setup(["f_falle"]) + var g: Game = s[0] + var h: Game.Player = s[1] + var o: Game.Player = s[2][0] + check(C("f_falle").is_trap() and C("f_falle").text().begins_with("Falle. Wenn ein gegnerisches Wesen"), "Fallentext") + check(g.play_card(h, C("f_falle")) == "" and h.traps.size() == 1 and h.hand.is_empty() and h.energy == 8, "Falle gelegt") + check(g.log.back() == "Du legt eine Falle.", "Falle bleibt im Verlauf verdeckt") + g.end_turn() + var a := put(o, "e_troll") + check(g.attack(a, h) == "", "Angriff in die Feuerfalle") + check(h.traps.is_empty() and a.health == 3 and h.life == 26, "Feuerfalle: 3 Schaden, Angriff geht durch") + # Frostfalle bricht den Angriff ab + s = setup(["w_falle"]) + g = s[0] + h = s[1] + o = s[2][0] + g.play_card(h, C("w_falle")) + g.end_turn() + a = put(o, "e_troll") + g.attack(a, h) + check(h.life == 30 and a.frozen and a.attacks_left == 0, "Frostfalle: Angriff verpufft, Angreifer eingefroren") + # Erdwall beschwört einen Steinwall + s = setup(["e_falle"]) + g = s[0] + h = s[1] + o = s[2][0] + g.play_card(h, C("e_falle")) + g.end_turn() + a = put(o, "f_wolf") + g.attack(a, h) + check(h.board.size() == 1 and h.board[0].name == "Steinwall" and h.life == 27, "Erdwall beschwört Steinwall") + # Windfalle schickt ein ausgespieltes Wesen zurück + s = setup(["l_falle"], ["f_wolf"]) + g = s[0] + h = s[1] + o = s[2][0] + g.play_card(h, C("l_falle")) + g.end_turn() + g.play_card(o, C("f_wolf")) + check(o.board.is_empty() and C("f_wolf") in o.hand and o.energy == 8, "Windfalle: Wesen zurück, Energie weg") + # Höchstens zwei Fallen + s = setup(["f_falle", "f_falle", "f_falle"]) + g = s[0] + h = s[1] + g.play_card(h, C("f_falle")) + g.play_card(h, C("f_falle")) + check(not g.can_play(h, C("f_falle"))[0] and "Fallen" in g.can_play(h, C("f_falle"))[1], "höchstens 2 Fallen") + # Falle schützt auch Wesen: toter Angreifer trifft nicht mehr + s = setup(["f_falle"]) + g = s[0] + h = s[1] + o = s[2][0] + g.play_card(h, C("f_falle")) + var w := put(h, "e_wall") + g.end_turn() + a = put(o, "f_wolf") + g.attack(a, w) + check(not (a in o.board) and w.health == 4, "Feuerfalle tötet den Wolf, Steinwall bleibt heil") + + +func test_ki_sieht_fallen_nicht() -> void: + var s := setup(["w_falle"]) + var g: Game = s[0] + var h: Game.Player = s[1] + var o: Game.Player = s[2][0] + g.play_card(h, C("w_falle")) + var hi := g.players.find(h) + var oi := g.players.find(o) + check(g.clone().players[hi].traps.size() == 1, "volle Kopie kennt Fallen") + var g2 := g.clone_for(o) + check(g2.players[hi].traps.is_empty() and g2.players[oi].traps == o.traps, "KI-Kopie kennt fremde Fallen nicht") + g.end_turn() + o.hand = [] + o.mulligan_done = true + var a := put(o, "e_troll") + var act := AI.choose_action(g, o) + check(act.type == "attack" and act.target == h, "KI greift trotz verdeckter Falle an") + check(g.clone_for(h).players[hi].traps.size() == 1, "eigene Fallen bleiben in der eigenen Kopie") + + +func test_hotseat() -> void: + var r := RandomNumberGenerator.new() + r.seed = 3 + var d := Profile.starter().deck_cards() + var g := Game.new_hotseat([d, d], 1, r) + check(g.players.size() == 3 and g.humans.size() == 2, "zwei Menschen und eine KI") + check(g.humans[0].name == "Spieler 1" and g.humans[1].name == "Spieler 2", "Spielernamen") + var ai = g.players.filter(func(p): return not p.is_human)[0] + g.damage(ai, 99) + g.check_end() + check(g.winner == "", "zwei Menschen übrig: weiter") + g.damage(g.humans[1], 99) + g.check_end() + check(g.winner == "human" and g.winner_player == g.humans[0], "Spieler 1 gewinnt") + var g2 := Game.new_hotseat([d, d], 1, r) + for hu in g2.humans: + g2.damage(hu, 99) + g2.check_end() + check(g2.winner == "opponents" and g2.winner_player != null and not g2.winner_player.is_human, "KI gewinnt, wenn alle Menschen tot sind") + var g3 := Game.new_hotseat([d, d, d], 0, r) + check(g3.players.size() == 3 and g3.opponents.size() == 2, "drei Menschen ohne KI") + var guard := 0 + while g3.winner == "" and guard < 300: + AI.take_turn(g3, g3.current(), true) + guard += 1 + check(g3.winner == "human" and g3.winner_player != null, "Hotseat-Partie endet mit Sieger") + + +func test_zufallssamen() -> void: + Game.test_seed = 77 + var a := Game.make_rng().randi() + Game.test_seed = 77 + var b := Game.make_rng().randi() + Game.test_seed = 0 + check(a == b, "fester Samen wiederholbar") + var c := Game.make_rng().randi() + var d := Game.make_rng().randi() + check(c != d, "ohne Samen echter Zufall") + + +func test_deck_slots_und_werkstatt() -> void: + var p := Profile.starter() + check(p.decks.size() == Profile.DECK_SLOTS and p.deck.size() == 20 and p.decks[1].cards.is_empty(), "fünf Slots, Deck 1 gefüllt") + p.active_deck = 1 + check(p.deck.is_empty() and not p.deck_valid()[0] and p.deck_valid(0)[0], "aktives Deck wechselt") + p.deck = ["f_kobold"] + check(p.decks[1].cards == ["f_kobold"], "Zuweisung geht in den Slot") + p.active_deck = 0 + # Migration aus Version 2 (ein Deck) + var v2 := {"version": 2, "coins": 5, "collection": {"f_kobold": 3}, "deck": ["f_kobold", "f_kobold"]} + var m := Profile.from_dict(v2) + check(m.decks[0].cards == ["f_kobold", "f_kobold"] and m.active_deck == 0 and m.dust == 0, "Version 2 wird zu Slot 1") + var v3 := Profile.from_dict(JSON.parse_string(JSON.stringify(p.to_dict()))) + check(v3.decks[1].cards == ["f_kobold"] and v3.deck_name(1) == "Deck 2", "Version 3 gelesen") + # Werkstatt + p.collection["f_kobold"] = 5 + check(p.dismantle("f_kobold") == "" and p.collection["f_kobold"] == 4 and p.dust == 5, "Zerlegen bringt Staub") + check(p.dismantle("f_kobold", 3) != "" and p.collection["f_kobold"] == 4, "Deckbedarf schützt Karten") + check(p.dismantle("ff_phoenix") != "", "nichts zu zerlegen") + p.dust = 100 + check(p.craft("ff_phoenix") != "" and p.dust == 100, "zu wenig Staub") + p.dust = 1600 + check(p.craft("ff_phoenix") == "" and p.collection["ff_phoenix"] == 1 and p.dust == 0, "Herstellen") + p.collection["f_wolf"] = 6 + var got := p.dismantle_extras() + check(got == 20 and p.collection["f_wolf"] == 3 and p.collection["f_kobold"] == 3, "Überschuss zerlegt") + + +func test_spielstand_sicherung() -> void: + var path := "user://test_sicherung.json" + var abs := ProjectSettings.globalize_path(path) + for suffix in ["", ".bak", ".corrupt"]: + if FileAccess.file_exists(path + suffix): + DirAccess.remove_absolute(abs + suffix) + var p := Profile.load_or_new(path) + p.coins = 123 + p.save(path) + p.coins = 456 + p.save(path) + check(FileAccess.file_exists(path + ".bak"), "Sicherung angelegt") + check(Profile.load_or_new(path).coins == 456 and Profile.load_or_new(path + ".bak").coins == 123, "Sicherung ist der Vorgänger") + var f := FileAccess.open(path, FileAccess.WRITE) + f.store_string("{kaputt") + f.close() + check(Profile.load_or_new(path).coins == 123, "kaputter Stand: Sicherung greift") + for suffix in ["", ".bak", ".corrupt"]: + if FileAccess.file_exists(path + suffix): + DirAccess.remove_absolute(abs + suffix) + + +func test_mulligan() -> void: + var r := RandomNumberGenerator.new() + r.seed = 9 + var g := Game.new_battle(Profile.starter().deck_cards(), 1, r) + var first: Game.Player = g.players[0] + var hand_before := first.hand.duplicate() + var swap := [hand_before[0], hand_before[1]] + check(g.mulligan(first, swap) == "", "Mulligan erlaubt im ersten Zug") + check(first.hand.size() == hand_before.size() and first.deck.size() == 20 - hand_before.size(), "gleich viele Karten nachgezogen") + check(g.mulligan(first, [first.hand[0]]) != "", "nur einmal") + check(g.log.any(func(l): return "tauscht 2 Karten" in l), "Mulligan im Verlauf") + g.end_turn() + var second: Game.Player = g.players[1] + check(g.mulligan(first, []) != "", "nicht im fremden Zug") + check(g.mulligan(second, []) == "" and second.mulligan_done, "Hand behalten zählt als Mulligan") + for i in 2: + g.end_turn() + check(g.mulligan(g.current(), []) != "", "nicht mehr im zweiten Zug") + # KI tauscht teure Karten + var s := setup([], ["ff_phoenix", "f_kobold", "ww_leviathan"]) + var g2: Game = s[0] + var o: Game.Player = s[2][0] + g2.end_turn() + var act := AI.choose_action(g2, o) + check(act.type == "mulligan" and act.cards.size() == 2 and not (C("f_kobold") in act.cards), "KI legt teure Karten zurück") + AI.apply_action(g2, o, act) + check(o.mulligan_done and AI.choose_action(g2, o).type != "mulligan", "danach normale Züge") + + +func test_merkmale() -> void: + var s := setup(["f_wolf", "l_falke", "e_wall", "f_funke"]) + var g: Game = s[0] + var h: Game.Player = s[1] + var o: Game.Player = s[2][0] + h.perks = ["feuer_angriff", "flink_angriff", "waechter_leben", "schild_wesen", "alle_flink", "zauber_schaden", "resonanz_doppelt"] + g.play_card(h, C("f_wolf")) + var wolf: Game.Creature = h.board[0] + check(wolf.power() == 4 and wolf.shield and wolf.can_attack(), "Feuer +1, Schild, sofort bereit") + g.play_card(h, C("l_falke")) + check(h.board[1].power() == 4, "Flink +1") + g.play_card(h, C("e_wall")) + check(h.board[2].health == 6 and h.board[2].max_health == 6, "Wächter +2 Leben") + var life_before: int = o.life + g.play_card(h, C("f_funke"), o) + check(o.life == life_before - 3, "Zauber +1 Schaden") + put(h, "f_kobold") + g.update_resonance() + check(wolf.resonance == 2 and wolf.power() == 6, "Resonanz doppelt") + for perk in Game.PERKS: + check(Campaign.STAGES.any(func(st): return st.perk == perk), "Merkmal vergeben: " + perk) + var r := RandomNumberGenerator.new() + r.seed = 2 + var mara: Game.Player = Campaign.opponents(1, r)[0] + check(mara.life == 35 and mara.perks == ["leben_35"], "Mara hat 35 Leben") + var g3 := Game.new_battle_with(Profile.starter().deck_cards(), Campaign.opponents(9, r), r, true) + var archi: Game.Player = g3.opponents[0] + check(g3.players[0] == g3.human, "feste Reihenfolge: Mensch beginnt") + g3.end_turn() + check(g3.current() == archi and archi.max_energy == 3, "Archimagier beginnt mit 3 Energie") + var nyx: Game.Player = Campaign.opponents(5, r)[0] + var g4 := Game.new_battle_with(Profile.starter().deck_cards(), [nyx], r, true) + var before: int = nyx.hand.size() + g4.end_turn() + check(nyx.hand.size() == before + 2, "Nyx zieht 2 Karten") + + +func test_ki_zwei_schritte() -> void: + # Gegner hat 5 Leben, eigenes Wesen 3 Angriff, Verhärten (+2) auf der Hand: erst verstärken, dann töten + var s := setup(["e_haerten"]) + var g: Game = s[0] + var h: Game.Player = s[1] + var o: Game.Player = s[2][0] + h.mulligan_done = true + h.turns = 2 + o.life = 5 + var a := put(h, "f_wolf") + var act := AI.choose_action(g, h) + check(act.type == "play" and act.card == C("e_haerten") and act.target == a, "KI verstärkt zuerst") + AI.apply_action(g, h, act) + var act2 := AI.choose_action(g, h) + check(act2.type == "attack" and act2.target == o, "dann tödlicher Angriff") + AI.apply_action(g, h, act2) + check(g.winner == "human", "Zwei-Schritt-Plan gewinnt") + + +func test_snapshot() -> void: + var s := setup(["f_falle", "f_wolf"], ["w_eis"], 2) + var g: Game = s[0] + var h: Game.Player = s[1] + var o: Game.Player = s[2][0] + g.play_card(h, C("f_falle")) + g.play_card(h, C("f_wolf")) + put(o, "e_troll") + var hi := g.players.find(h) + var oi := g.players.find(o) + var snap := g.snapshot(hi) + var json: Dictionary = JSON.parse_string(JSON.stringify(snap)) + var g2 := Game.from_snapshot(json) + check(g2.players.size() == 3 and g2.turn == g.turn and g2.current_idx == g.current_idx, "Grunddaten") + check(g2.players[hi].hand.is_empty() and g2.players[hi].traps.size() == 1 and g2.players[hi].traps[0].id == "f_falle", "eigene Hand und Fallen sichtbar") + check(g2.players[oi].hand.size() == 1 and g2.players[oi].hand[0] != C("w_eis"), "fremde Hand nur als Anzahl") + check(g2.players[oi].deck.size() == o.deck.size(), "fremdes Deck nur als Anzahl") + var cr2 := g2.find_creature(h.board[0].uid) + check(cr2 != null and cr2.card.id == "f_wolf" and cr2.owner() == g2.players[hi] and not cr2.ready, "Wesen mit Besitzer und Zustand") + check(g2.events.size() == g.events.size() and g2.events.back().type == g.events.back().type, "Ereignisse übertragen") + check(not g2.can_play(g2.players[hi], C("fff_sonne"))[0] and g2.valid_targets(g2.players[hi], "enemy_creature").size() == 1, "Kopie kennt die Regeln") + var snap_o := g.snapshot(oi) + check(snap_o.players[hi].hand is int and snap_o.players[hi].traps is int and snap_o.players[oi].hand is Array, "Sicht des Gegners") + + +func test_statistik_pity_tagesaufgaben() -> void: + Profile.today_override = "2026-09-20" + var p := Profile.starter() + var deck := p.deck_cards() + p.record_battle(true, 3, deck, -1, ["f_kobold", "f_kobold", "f_funke"]) + check(p.card_stats["f_kobold"].played == 2 and p.card_stats["f_funke"].played == 1, "gespielte Karten gezählt") + check(p.card_stats["f_kobold"].games == 1 and p.card_stats["f_kobold"].wins == 1 and p.card_stats["e_wall"].games == 1, "Partien und Siege je Deckkarte") + p.record_battle(false, 1, deck, -1, []) + check(p.card_stats["f_kobold"].games == 2 and p.card_stats["f_kobold"].wins == 1, "Niederlage zählt Partie") + var top := p.top_cards(3) + check(top.size() == 3 and top[0].wins == 1, "Bestenliste der Karten") + # Pity-Zähler + p.coins = 100000 + var r := RandomNumberGenerator.new() + r.seed = 1 + p.booster_since_mythic = Profile.PITY_BOOSTERS - 1 + var got := p.open_booster(r) + check(got.any(func(c): return c.rarity == "mythisch"), "nach %d Boostern garantiert mythisch" % Profile.PITY_BOOSTERS) + check(p.booster_since_mythic == 0, "Zähler zurückgesetzt") + var v := Profile.from_dict(JSON.parse_string(JSON.stringify(p.to_dict()))) + check(v.card_stats["f_kobold"].played == 2 and v.booster_since_mythic == 0 and v.settings.has("music"), "Version 4 gelesen") + # Zwölf Tagesaufgaben, elementbezogen + check(Profile.DAILY_TASKS.size() == 12, "zwölf Tagesaufgaben") + var seen := {} + for day in range(1, 13): + Profile.today_override = "2026-10-%02d" % day + p.refresh_daily() + seen[p.daily.task] = true + check(seen.size() == 12, "jede Aufgabe kommt vor") + for t in Profile.DAILY_TASKS: + var q := Profile.starter() + q.daily = {"date": Profile.today(), "task": t.id, "progress": 0, "done": false} + var mono := [] + for i in 20: + mono.append(Cards.by_id("w_reiter")) + match t.kind: + "win": + q.record_battle(true, 1, mono) + "game": + for i in t.goal: + q.record_battle(false, 1, mono) + "booster": + q.coins = 1000 + for i in t.goal: + q.open_booster(r) + "craft": + q.dust = 10000 + q.craft("f_kobold") + "win_vs3": + q.record_battle(true, 3, mono) + "win_element:Wasser": + q.record_battle(true, 1, mono) + "win_element:Feuer": + q.record_battle(true, 1, q.deck_cards()) + "win_element:Erde": + q.record_battle(true, 1, q.deck_cards()) + "win_element:Luft": + var luft := [] + for i in 20: + luft.append(Cards.by_id("l_falke")) + q.record_battle(true, 1, luft) + _: + for i in t.goal: + q.daily_event(t.kind) + check(q.daily.done, "Tagesaufgabe erfüllbar: " + t.id) + Profile.today_override = "" + + +func test_deck_umbenennen_und_auffuellen() -> void: + var p := Profile.starter() + check(p.rename_deck(1, " Feuerdeck ") == "" and p.deck_name(1) == "Feuerdeck", "umbenannt") + check(p.rename_deck(1, "") != "" and p.rename_deck(1, "x".repeat(40)) != "", "Name geprüft") + check(p.autofill_deck(1) == "" and p.deck_valid(1)[0], "leerer Slot aufgefüllt und spielbar") + check(Game.deck_elements(p.deck_cards(1)).size() <= 2, "höchstens zwei Elemente") + p.decks[2].cards = ["l_falke", "l_wind"] + check(p.autofill_deck(2) == "" and p.deck_valid(2)[0], "Luft-Slot aufgefüllt") + check(p.deck_cards(2).all(func(c): return c.elements.all(func(e): return e in ["Luft", Game.deck_elements(p.deck_cards(2))[1] if Game.deck_elements(p.deck_cards(2)).size() > 1 else "Luft"])), "Auffüllen bleibt bei den Elementen") + var q := Profile.new() + q.collection = {"f_kobold": 1} + check(q.autofill_deck(0) != "", "zu wenig Karten: Fehlermeldung") + + +func test_neue_fallen() -> void: + check(Cards.all().filter(func(c): return c.is_trap()).size() == 10, "zehn Fallen") + check(C("e_sandfalle").text() == "Falle. Wenn ein Gegner ein Wesen ausspielt: Es wird eingefroren.", "Fallentext je Auslöser") + check(C("f_aschefalle").text().ends_with("3 Schaden an dieses Wesen."), "Aschefalle-Text") + # Böenfalle: Angreifer zurück auf die Hand, Angriff verpufft + var s := setup(["l_boenfalle"]) + var g: Game = s[0] + var h: Game.Player = s[1] + var o: Game.Player = s[2][0] + g.play_card(h, C("l_boenfalle")) + g.end_turn() + var a := put(o, "e_troll") + g.attack(a, h) + check(o.board.is_empty() and C("e_troll") in o.hand and h.life == 30, "Böenfalle: Angreifer zurück, kein Schaden") + # Aschefalle: 3 Schaden an das ausgespielte Wesen + s = setup(["f_aschefalle"], ["f_wolf"]) + g = s[0] + h = s[1] + o = s[2][0] + g.play_card(h, C("f_aschefalle")) + g.end_turn() + g.play_card(o, C("f_wolf")) + check(o.board.is_empty(), "Aschefalle tötet den 3/2 Wolf beim Ausspielen") + # Sandfalle friert das ausgespielte Wesen ein, Spiegelfalle beschwört einen Windgeist + s = setup(["e_sandfalle", "l_spiegel"], ["e_troll"]) + g = s[0] + h = s[1] + o = s[2][0] + g.play_card(h, C("e_sandfalle")) + g.play_card(h, C("l_spiegel")) + g.end_turn() + g.play_card(o, C("e_troll")) + check(o.board.size() == 1 and o.board[0].frozen, "Sandfalle friert ein") + check(h.board.size() == 1 and h.board[0].name == "Windgeist", "Spiegelfalle beschwört Windgeist") + check(h.traps.is_empty(), "beide Fallen verbraucht") + # Nebelfalle bricht ab und zieht, Dornenfalle verletzt und heilt + s = setup(["w_nebelfalle", "e_dornen"]) + g = s[0] + h = s[1] + o = s[2][0] + g.play_card(h, C("w_nebelfalle")) + g.play_card(h, C("e_dornen")) + h.life = 20 + g.end_turn() + a = put(o, "e_troll") + var hand_before := h.hand.size() + g.attack(a, h) + check(h.life == 20 and h.hand.size() == hand_before + 1 and a.health == 6, "Nebelfalle zuerst: verpufft, Karte gezogen") + var b := put(o, "f_wolf") + g.attack(b, h) + check(b.health <= 0 or not (b in o.board), "Dornenfalle: 2 Schaden töten den Wolf") + check(h.life == 23, "Dornenfalle heilt 3, Angriff entfällt") + + +func test_kapitel_zwei_und_merkmalwahl() -> void: + check(Campaign.total() == 20 and Campaign.chapter(9) == 1 and Campaign.chapter(10) == 2, "zwanzig Stufen in zwei Kapiteln") + for i in Campaign.total(): + var st := Campaign.stage(i) + check(st.has("perks") and st.perks.all(func(k): return Game.PERKS.has(k)), "Stufe %d hat gültige Merkmale" % (i + 1)) + var r := RandomNumberGenerator.new() + r.seed = 8 + var opps := Campaign.opponents(19, r) + check(opps.size() == 5 and opps[0].name == "Archimagier" and opps[0].perks.size() == 3, "letzte Stufe: Archimagier mit drei Merkmalen, voller Tisch") + var p := Profile.starter() + check(not p.perk_unlocked(), "Merkmalwahl erst nach Kapitel 1") + p.campaign_stage = 10 + check(p.perk_unlocked(), "nach Kapitel 1 freigeschaltet") + p.perk = "feuer_angriff" + var g := Game.new_battle(p.deck_cards(), 1, r, {"human_perks": [p.perk]}) + check(g.human.perks == ["feuer_angriff"] and g.log.any(func(l): return l.begins_with("Du: Feuerwesen")), "eigenes Merkmal wirkt und steht im Verlauf") + p.campaign_stage = 19 + p.record_battle(true, 5, p.deck_cards(), 19) + check(p.campaign_stage == 20 and "elementmeister" in p.achievements, "Kapitel 2 abgeschlossen") + var v := Profile.from_dict(JSON.parse_string(JSON.stringify(p.to_dict()))) + check(v.perk == "feuer_angriff" and v.campaign_stage == 20, "Version 5 gelesen") + + +func test_herausforderung_und_bestenliste() -> void: + Profile.today_override = "2026-09-16" + var ch := Challenge.current() + check(ch.has("rules") and ch.n_opp >= 1, "Herausforderung der Woche") + var weeks := {} + for d in range(1, 43, 7): + Profile.today_override = "2026-%02d-%02d" % [1 + d / 28, 1 + d % 28] + weeks[Challenge.current().id] = true + check(weeks.size() >= 4, "Herausforderungen wechseln wöchentlich") + Profile.today_override = "2026-09-16" + var mono := [] + for i in 20: + mono.append(Cards.by_id("w_reiter")) + check(Challenge.deck_allowed(Challenge.LIST[5], Profile.starter().deck_cards()) != "", "Reine Lehre lehnt Zwei-Element-Deck ab") + check(Challenge.deck_allowed(Challenge.LIST[5], mono) == "", "Mono-Deck erlaubt") + var r := RandomNumberGenerator.new() + r.seed = 4 + var g := Game.new_battle(mono, 3, r, Challenge.LIST[0].rules) + check(g.players.all(func(p): return p.life == 20 and "start_energie" in p.perks), "Eile: 20 Leben und Startenergie für alle") + check(g.players[0].max_energy == 3, "Startspieler hat 3 Energie") + var p := Profile.starter() + var coins := p.coins + var reward := p.record_battle(true, 3, mono, -1, [], 7, Challenge.LIST[0]) + check(reward == Challenge.LIST[0].reward and p.challenge_week == Challenge.week() and "wochenheld" in p.achievements, "Herausforderung belohnt") + reward = p.record_battle(true, 3, mono, -1, [], 9, Challenge.LIST[0]) + check(reward == Profile.REWARD_WIN[3], "nur einmal pro Woche") + check(p.records.streak == 2 and p.records.best_streak == 2 and p.records.fastest_win == 7, "Serie und schnellster Sieg") + p.record_battle(false, 1, mono, -1, [], 12) + check(p.records.streak == 0 and p.records.best_streak == 2, "Niederlage bricht die Serie") + for i in 5: + p.record_battle(true, 1, mono, -1, [], 10) + check("serie" in p.achievements, "Siegesserie-Erfolg") + var path := "user://test_statistik.csv" + check(p.export_stats(path) == "", "Statistik exportiert") + var text := FileAccess.get_file_as_string(path) + check(text.begins_with("karte;seltenheit;gespielt;partien;siege") and "beste_serie;5" in text, "CSV-Inhalt") + DirAccess.remove_absolute(ProjectSettings.globalize_path(path)) + Profile.today_override = "" diff --git a/tests/test_runner.gd.uid b/tests/test_runner.gd.uid new file mode 100644 index 0000000..784a024 --- /dev/null +++ b/tests/test_runner.gd.uid @@ -0,0 +1 @@ +uid://cgjm40u037dnl diff --git a/tests/ui_test.gd b/tests/ui_test.gd new file mode 100644 index 0000000..48ddb3e --- /dev/null +++ b/tests/ui_test.gd @@ -0,0 +1,674 @@ +extends Node +## Oberflächentest mit echtem Fenster und Screenshots: +## DINGER_SHOTS=/pfad/zum/ordner godot --path . tests/ui_test.tscn + +const SAVE := "user://test_ui_spielstand.json" + +var main: Control +var shots := "" +var passed := 0 +var failed := 0 + + +func check(cond: bool, msg: String) -> void: + if cond: + passed += 1 + else: + failed += 1 + printerr("FEHLER: " + msg) + + +func frames(n: int = 2) -> void: + for i in n: + await get_tree().process_frame + + +func shot(name: String) -> void: + if shots == "": + return + await RenderingServer.frame_post_draw + get_viewport().get_texture().get_image().save_png(shots.path_join(name + ".png")) + + +func click_at(pos: Vector2) -> void: + var down := InputEventMouseButton.new() + down.position = pos + down.global_position = pos + down.button_index = MOUSE_BUTTON_LEFT + down.pressed = true + get_viewport().push_input(down) + var up: InputEventMouseButton = down.duplicate() + up.pressed = false + get_viewport().push_input(up) + await frames(2) + + +func click(node: Control) -> void: + check(node != null, "Klickziel vorhanden") + if node != null: + await click_at(node.get_global_rect().get_center()) + + +func right_click() -> void: + var down := InputEventMouseButton.new() + down.position = Vector2(5, 5) + down.global_position = down.position + down.button_index = MOUSE_BUTTON_RIGHT + down.pressed = true + get_viewport().push_input(down) + var up: InputEventMouseButton = down.duplicate() + up.pressed = false + get_viewport().push_input(up) + await frames(2) + + +func key(code: int) -> void: + var down := InputEventKey.new() + down.keycode = code + down.pressed = true + get_viewport().push_input(down) + var up := InputEventKey.new() + up.keycode = code + up.pressed = false + get_viewport().push_input(up) + await frames(2) + + +## Mulligan-Maske wegklicken (Hand behalten), falls sie offen ist. +func clear_mulligan(scr) -> void: + if scr.mulligan_box.visible: + await click(scr.b_keep) + + +func hover(node: Control) -> void: + var ev := InputEventMouseMotion.new() + ev.position = node.get_global_rect().get_center() + ev.global_position = ev.position + get_viewport().push_input(ev) + await frames(2) + + +func screen(): + return main.screen + + +## Jeder Abschnitt startet im Menü, auch wenn ein vorheriger abgebrochen ist. +func ensure_menu() -> void: + if main.net.connected: + main.net.leave() + if TranslationServer.get_locale().begins_with("en"): + main.set_language("de") + if not (screen() is MenuScreen): + main.show_screen(MenuScreen.new()) + await frames(2) + + +func find_button(text: String, root: Node = null) -> Button: + if root == null: + root = screen() + for c in root.get_children(): + if c is Button and (c.text == text or c.tr(c.text) == text) and c.is_visible_in_tree(): + return c + var found := find_button(text, c) + if found != null: + return found + return null + + +func card_views(root: Node) -> Array: + var out := [] + for c in root.get_children(): + if c is CardView: + out.append(c) + out.append_array(card_views(c)) + return out + + +## Wartet, bis keine Kachel mehr animiert wird (Angriffe verschieben Kacheln kurz). +func settle(scr) -> void: + for i in 40: + if not scr.tiles.values().any(func(t): return t.busy): + return + await frames(1) + + +func wait_for_human(scr) -> void: + var g: Game = scr.game + var wait := 0 + while g.current() != g.human and g.winner == "" and wait < 600: + await frames(1) + wait += 1 + await frames(1) + await clear_mulligan(scr) + + +func _ready() -> void: + Game.test_seed = 4242 # wiederholbare Partien und Booster + shots = OS.get_environment("DINGER_SHOTS") + var abs := ProjectSettings.globalize_path(SAVE) + for suffix in ["", ".bak", ".corrupt"]: + if FileAccess.file_exists(SAVE + suffix): + DirAccess.remove_absolute(abs + suffix) + main = load("res://scenes/main.tscn").instantiate() + main.save_path = SAVE + add_child(main) + await frames(3) + for t in [test_menu_und_regeln, test_booster, test_deckbau, test_gegnerauswahl, test_einstellungen, + test_erfolge, test_kampagne, test_werkstatt, test_sprache, test_anleitung, test_hotseat, + test_netzwerk, test_kampf.bind(2, 3), test_kampf_abbrechen]: + await ensure_menu() + await t.call() + for suffix in ["", ".bak", ".corrupt"]: + if FileAccess.file_exists(SAVE + suffix): + DirAccess.remove_absolute(abs + suffix) + print("%d Prüfungen bestanden, %d fehlgeschlagen" % [passed, failed]) + get_tree().quit(1 if failed > 0 else 0) + + +func test_menu_und_regeln() -> void: + check(screen() is MenuScreen, "Menü sichtbar") + await shot("01_menu") + await click(find_button("Regeln")) + check(screen() is RulesScreen, "Regeln geöffnet") + await shot("02_regeln") + await click(find_button("Zurück")) + check(screen() is MenuScreen, "zurück im Menü") + + +func test_booster() -> void: + await click(find_button("Booster öffnen")) + var scr = screen() + check(scr is BoosterScreen, "Boosterbildschirm") + var coins: int = main.profile.coins + var ach_before: int = main.profile.achievements.size() + await click(scr.b_buy) + var bonus := 0 + for a in Profile.ACHIEVEMENTS: + if a.id in main.profile.achievements.slice(ach_before): + bonus += a.reward + check(main.profile.coins == coins - Profile.BOOSTER_COST + bonus, "Booster bezahlt (plus Erfolgsmünzen %d)" % bonus) + check(scr.cards.size() == 5 and scr.revealed.is_empty(), "5 verdeckte Karten") + await shot("03_booster_zu") + var backs: Array = scr.slots.get_children().filter(func(c): return c is BoosterScreen.CardBack) + await click(backs[0]) + check(scr.revealed.size() == 1, "eine Karte aufgedeckt") + await click(scr.b_all) + check(scr.revealed.size() == 5, "alle aufgedeckt") + await shot("04_booster_offen") + check(Profile.load_or_new(SAVE).coins == main.profile.coins, "Kauf gespeichert") + check(scr.b_buy.disabled == (main.profile.coins < Profile.BOOSTER_COST), "Kaufknopf folgt dem Münzstand") + await click(find_button("Zurück")) + check(screen() is MenuScreen, "zurück im Menü") + + +func test_deckbau() -> void: + await click(find_button("Deck bauen")) + var scr = screen() + check(scr is DeckScreen, "Deckbildschirm") + check(scr.deck.size() == 20, "Deck geladen") + await shot("05_deck") + await click(find_button("Leeren")) + check(scr.deck.is_empty(), "geleert") + var first_id: String = card_views(scr.grid)[0].card.id + var allowed: int = mini(main.profile.collection[first_id], Game.MAX_COPIES) + await click(card_views(scr.grid)[0]) + check(scr.deck == [first_id], "Karte hinzugefügt") + for i in allowed: + await click(card_views(scr.grid)[0]) + check(scr.deck.count(first_id) == allowed and "Kopien" in scr.msg_label.text, "nur besessene Kopien (%d)" % allowed) + await click(find_button("Speichern")) + check(main.profile.deck.size() == 20 and scr.msg_label.text != "Deck gespeichert", "zu kleines Deck nicht gespeichert") + await click(find_button("Wasser")) + await click(card_views(scr.grid)[0]) + await click(find_button("Erde")) + await click(card_views(scr.grid)[0]) + check("Elemente" in scr.msg_label.text, "drittes Element abgelehnt") + await click(find_button("Alle")) + # Suche, Sortierung, fehlende Karten + var all_count := card_views(scr.grid).size() + scr.search_box.text = "Wächter" + scr.search_box.text_changed.emit("Wächter") + await frames(1) + var found := card_views(scr.grid) + check(found.size() > 0 and found.size() < all_count, "Suche filtert") + check(found.all(func(v): return "Wächter" in v.card.text() or "Wächter" in v.card.name), "Suche trifft Kartentext") + scr.search_box.text = "" + scr.search_box.text_changed.emit("") + scr.sort_box.select(1) + scr.sort_box.item_selected.emit(1) + await frames(1) + var names: Array = card_views(scr.grid).map(func(v): return v.card.name) + var sorted_names := names.duplicate() + sorted_names.sort() + check(names == sorted_names, "Sortierung nach Name") + scr.missing_box.button_pressed = true + await frames(1) + check(card_views(scr.grid).size() == Cards.all().size(), "Fehlende Karten eingeblendet") + var missing = card_views(scr.grid).filter(func(v): return main.profile.collection.get(v.card.id, 0) == 0) + check(not missing.is_empty(), "es gibt fehlende Karten") + await click(missing[0]) + check("fehlt" in scr.msg_label.text, "fehlende Karte nicht ins Deck") + scr.missing_box.button_pressed = false + scr.sort_box.select(0) + scr.sort_box.item_selected.emit(0) + await frames(1) + var n: int = scr.deck.size() + await click(scr.deck_list.get_children()[0]) + check(scr.deck.size() == n - 1, "Zeile entfernt Karte") + await hover(card_views(scr.grid)[0]) + check(scr.preview.visible, "Vorschau bei Hover") + await shot("06_deck_bearbeitet") + # Slots: Deck 2 aus Deck 1 kopieren, speichern, aktiv setzen + await click(scr.slot_buttons[1]) + if scr.slot != 1 or not scr.deck.is_empty(): + print("DEBUG Slot: slot=", scr.slot, " deck=", scr.deck.size(), " rect=", scr.slot_buttons[1].get_global_rect(), + " hovered=", get_viewport().gui_get_hovered_control(), " decks1=", main.profile.decks[1].cards.size()) + check(scr.slot == 1 and scr.deck.is_empty(), "Slot 2 leer") + scr.deck = main.profile.decks[0].cards.duplicate() + scr.refresh() + await click(find_button("Speichern")) + check(main.profile.decks[1].cards.size() == 20 and "gespeichert" in scr.msg_label.text, "Slot 2 gespeichert") + await click(find_button("Aktiv setzen")) + check(main.profile.active_deck == 1 and main.profile.deck_name() == "Deck 2", "Slot 2 aktiv") + check(Profile.load_or_new(SAVE).active_deck == 1, "aktiver Slot gespeichert") + scr.name_box.text = "Testdeck" + scr.name_box.text_submitted.emit("Testdeck") + check(main.profile.deck_name(1) == "Testdeck" and Profile.load_or_new(SAVE).deck_name(1) == "Testdeck", "Deck umbenannt") + await click(scr.slot_buttons[2]) + check(scr.slot == 2 and scr.deck.is_empty(), "Slot 3 leer") + await click(find_button("Auto-Ausfüllen")) + check(scr.deck.size() == 20 and main.profile.deck_valid(2)[0], "Slot 3 automatisch gefüllt und spielbar") + await shot("25_deck_slots") + await click(find_button("Zurück")) + check(screen() is MenuScreen and main.profile.deck.size() == 20, "Änderungen verworfen") + + +func target_view(scr, valid: Array) -> Control: + for v in scr.enemy_views: + if v.creature in valid: + return v + for v in scr.own_views: + if v.creature in valid: + return v + for p in scr.hero_panels: + if p in valid: + return scr.hero_panels[p] + return null + + +func human_turn(scr) -> void: + var g: Game = scr.game + await clear_mulligan(scr) + for i in 12: + var playable: Array = scr.hand_views.filter(func(v): return g.can_play(g.human, v.card)[0]) + if playable.is_empty(): + break + var card: Cards.Card = playable[0].card + var energy: int = g.human.energy + await click(playable[0]) + if scr.pending != null: + await click(target_view(scr, g.valid_targets(g.human, card.target_type()))) + check(g.human.energy == energy - card.cost, "Karte gespielt: " + card.name) + for i in 12: + var ready: Array = scr.own_views.filter(func(v): return v.creature.can_attack()) + if ready.is_empty() or g.winner != "": + break + var cr: Game.Creature = ready[0].creature + await settle(scr) + await hover(ready[0]) + var under = get_viewport().gui_get_hovered_control() + await click(ready[0]) + if scr.selected != cr: + print("DEBUG Auswahl fehlgeschlagen: rect=", ready[0].get_global_rect(), " scale=", ready[0].scale, + " busy=", ready[0].busy, " unter Maus=", under, " Meldung='", scr.msg_label.text, + "' Zug Mensch=", g.current().is_human, " kann=", cr.can_attack(), " pending=", scr.pending, " selected=", scr.selected) + check(scr.selected == cr, "Wesen gewählt") + var targets := [] + for o in g.opponents: + if o.alive() and g.can_attack(cr, o)[0]: + targets.append(o) + for c in o.board: + if g.can_attack(cr, c)[0]: + targets.append(c) + await settle(scr) + await click(target_view(scr, targets)) + check(scr.selected == null and cr.attacks_left < cr.attacks_per_turn(), "Angriff ausgeführt") + if g.winner == "": + await click(scr.b_end) + + +func start_battle(n_opp: int) -> void: + await click(find_button("Einzelspieler")) + check(screen() is OpponentSelectScreen, "Gegnerauswahl") + await click(find_button("%d Gegner" % n_opp)) + + +func test_gegnerauswahl() -> void: + await click(find_button("Einzelspieler")) + check(screen() is OpponentSelectScreen, "Gegnerauswahl geöffnet") + await shot("07_gegnerauswahl") + await click(find_button("Zurück")) + check(screen() is MenuScreen, "zurück im Menü") + for n in [1, 5]: + await start_battle(n) + var scr = screen() + check(scr is BattleScreen and scr.game.opponents.size() == n, "Kampf gegen %d gestartet" % n) + check(scr.game.players[0].max_energy == 1 and scr.game.opponents[0].life == Game.START_LIFE, "gleiche Regeln gegen %d" % n) + await shot("11_kampf_%d" % n) + await give_up() + + +func give_up() -> void: + var scr = screen() + await clear_mulligan(scr) + await click(find_button("Aufgeben")) + check(scr.confirm.visible, "Aufgeben fragt nach") + await click(find_button("Weiterspielen")) + check(not scr.confirm.visible and screen() == scr, "Weiterspielen bleibt im Kampf") + await click(find_button("Aufgeben")) + await click(find_button("Ja, aufgeben")) + check(screen() is MenuScreen, "Aufgeben führt ins Menü") + + +func test_einstellungen() -> void: + await click(find_button("Einstellungen")) + var scr = screen() + check(scr is SettingsScreen, "Einstellungen geöffnet") + scr.volume.value = 0.3 + scr.speed.value = 2.0 + scr.anim.button_pressed = false + await frames(1) + check(is_equal_approx(main.profile.settings.volume, 0.3) and is_equal_approx(main.profile.settings.ai_speed, 2.0), "Regler gespeichert") + check(main.profile.settings.animations == false, "Animationen abschaltbar") + check(is_equal_approx(Profile.load_or_new(SAVE).settings.volume, 0.3), "Einstellungen auf Platte") + scr.anim.button_pressed = true + await shot("13_einstellungen") + await click(find_button("Zurück")) + check(screen() is MenuScreen, "zurück im Menü") + + +func test_erfolge() -> void: + await click(find_button("Erfolge")) + check(screen() is AchievementsScreen, "Erfolge geöffnet") + await shot("14_erfolge") + await click(find_button("Zurück")) + check(screen() is MenuScreen, "zurück im Menü") + + +func test_werkstatt() -> void: + await click(find_button("Werkstatt")) + var scr = screen() + check(scr is WorkshopScreen, "Werkstatt geöffnet") + var p: Profile = main.profile + p.dust = 0 + var in_decks := {} + for d in p.decks: + for cid in d.cards: + in_decks[cid] = true + var free = scr.grid.views().filter(func(v): return p.collection.get(v.card.id, 0) > 0 and not in_decks.has(v.card.id)) + check(not free.is_empty(), "eine freie Karte zum Zerlegen") + var card: Cards.Card = free[0].card + await click(free[0]) + check(scr.selected == card, "Karte gewählt") + var before: int = p.collection[card.id] + await click(scr.b_dismantle) + check(p.collection[card.id] == before - 1 and p.dust == Profile.DUST_DISMANTLE[card.rarity], "zerlegt, Staub gutgeschrieben") + p.dust = 5000 + scr.search_box.text = "Phönix" + scr.search_box.text_changed.emit("Phönix") + await frames(1) + var phoenix = scr.grid.views().filter(func(v): return v.card.id == "ff_phoenix")[0] + await click(phoenix) + await click(scr.b_craft) + check(p.collection.get("ff_phoenix", 0) == 1 and p.dust == 5000 - Profile.DUST_CRAFT["legendär"], "Phönix hergestellt") + check(Profile.load_or_new(SAVE).collection.get("ff_phoenix", 0) == 1, "Werkstatt gespeichert") + await shot("20_werkstatt") + await click(find_button("Zurück")) + check(screen() is MenuScreen, "zurück im Menü") + + +func test_hotseat() -> void: + await click(find_button("Lokal zu mehreren")) + var scr = screen() + check(scr is HotseatScreen, "Hotseat-Auswahl") + await click(find_button("3 Spieler")) + await click(find_button("1 KI")) + check(scr.n_humans == 3 and scr.n_ai == 1, "3 Menschen, 1 KI") + await shot("17_hotseat") + await click(find_button("Start")) + var b = screen() + check(b is BattleScreen and b.is_hotseat() and b.game.players.size() == 4, "Hotseat-Kampf gestartet") + b.ai_delay = 0.0 + var guard := 0 + while not b.handover.visible and b.game.winner == "" and guard < 400: + if b.game.current() == b.perspective: + await clear_mulligan(b) + if b.game.current() == b.perspective: + await click(b.b_end) + await frames(1) + guard += 1 + check(b.handover.visible, "Übergabe erscheint") + var cur: Game.Player = b.game.current() + check(cur.is_human and cur != b.perspective, "anderer Mensch ist dran") + await shot("18_hotseat_uebergabe") + await click(find_button("Weiter")) + check(b.perspective == cur and not b.handover.visible, "Perspektive gewechselt") + check(b.hand_views.size() == cur.hand.size() and b.name_label.text == cur.name, "Hand und Name des neuen Spielers") + check(b.mulligan_box.visible, "neuer Spieler bekommt seine Mulligan-Maske") + await clear_mulligan(b) + check(b.hero_panels.size() == 3 and not b.hero_panels.has(cur), "drei andere am Tisch") + await shot("19_hotseat_kampf") + await give_up() + + +func test_sprache() -> void: + await click(find_button("Einstellungen")) + var scr = screen() + scr.language.select(1) + scr.language.item_selected.emit(1) + await frames(2) + check(TranslationServer.get_locale().begins_with("en") and main.profile.settings.language == "en", "Sprache auf Englisch") + check(TranslationServer.translate("Zurück") == "Back" and TranslationServer.translate("Einzelspieler") == "Single player", "Übersetzung geladen") + check(find_button("Back") != null, "Knöpfe übersetzt") + await shot("26_englisch") + await click(find_button("Back")) + check(find_button("Single player") != null and find_button("Settings") != null, "Menü auf Englisch") + await click(find_button("Settings")) + var scr2 = screen() + scr2.language.select(0) + scr2.language.item_selected.emit(0) + await frames(2) + check(find_button("Zurück") != null, "zurück auf Deutsch") + await click(find_button("Zurück")) + check(screen() is MenuScreen, "zurück im Menü") + + +func test_anleitung() -> void: + check(not main.profile.tutorial_done, "Anleitung noch offen") + await click(find_button("Anleitung")) + var scr = screen() + check(scr is BattleScreen and scr.tutorial, "Anleitung gestartet") + scr.ai_delay = 0.0 + var g: Game = scr.game + check(g.players[0] == g.human and g.opponents[0].name == "Fenn" and g.opponents[0].perks.is_empty(), "Fenn ohne Merkmal, Mensch beginnt") + await frames(2) + check(scr.mulligan_box.visible, "Mulligan-Maske im ersten Zug") + var views = scr.mulligan_layer.get_children() + await click(views[0]) + check(scr.mulligan_selected == [0], "Karte zum Tausch gewählt") + await shot("22_anleitung_mulligan") + await click(scr.b_swap) + check(not scr.mulligan_box.visible and g.human.mulligan_done, "getauscht") + check(g.log.any(func(l): return "tauscht 1 Karten" in l), "Tausch im Verlauf") + check(scr.tutorial_step == 0 and "Energie" in scr.tutorial_text.text, "Schritt 1 sichtbar") + var idx := -1 + for i in g.human.hand.size(): + if g.human.hand[i].is_creature() and g.human.hand[i].cost == 1: + idx = i + break + if idx >= 0: + await key(KEY_1 + idx) + check(g.human.board.size() == 1, "Wesen per Taste gespielt") + check(scr.tutorial_step == 1, "Schritt 2 nach dem Ausspielen") + await shot("22_anleitung") + await key(KEY_SPACE) + check(g.current() != g.human or g.turn >= 2, "Zug per Leertaste beendet") + await wait_for_human(scr) + check(scr.tutorial_step >= 2 or idx < 0, "Schritt 3 im zweiten Zug") + var step_before: int = scr.tutorial_step + await click(scr.b_tut_next) + check(scr.tutorial_step == step_before + 1, "Weiter-Knopf") + await key(KEY_ESCAPE) + check(scr.confirm.visible, "Esc öffnet Aufgeben") + await key(KEY_ESCAPE) + check(not scr.confirm.visible, "Esc schließt den Dialog") + await give_up() + check(main.profile.tutorial_done, "Anleitung als erledigt gespeichert") + + +func test_netzwerk() -> void: + await click(find_button("Netzwerkspiel")) + var scr = screen() + check(scr is LobbyScreen, "Lobby geöffnet") + await click(find_button("Spiel eröffnen")) + check(main.net.is_host and main.net.connected, "Spiel eröffnet") + var args := ["--headless", "--path", ProjectSettings.globalize_path("res://"), "tests/net_bot.tscn", "--", "--ip=127.0.0.1", "--name=Bot"] + var pid := OS.create_process(OS.get_executable_path(), args) + check(pid > 0, "Bot-Prozess gestartet") + var wait := 0 + while main.net.names.size() < 2 and wait < 900: + await frames(1) + wait += 1 + check(main.net.names.size() == 2, "Bot ist beigetreten (Pfad %s)" % main.net.get_path()) + await shot("23_lobby") + await click(find_button("Start")) + var b = screen() + check(b is BattleScreen and b.is_online() and not b.is_client(), "Netzwerkkampf als Host") + b.ai_delay = 0.0 + var rounds := 0 + while b.game != null and b.game.winner == "" and rounds < 4: + if b.game.current() == b.perspective: + await clear_mulligan(b) + if b.game.current() == b.perspective: + await click(b.b_end) + var w2 := 0 + while b.game.current() != b.perspective and b.game.winner == "" and w2 < 900: + await frames(1) + w2 += 1 + rounds += 1 + check(b.game.turn >= 3 and b.game.winner == "", "mehrere Runden gespielt, Partie läuft (Zug %d)" % b.game.turn) + check(b.game.log.any(func(l): return l.begins_with("Bot spielt") or l.begins_with("Bot behält") or l.begins_with("Bot tauscht")), "Bot hat gehandelt") + await shot("24_netzwerk_kampf") + OS.kill(pid) + var w3 := 0 + while b.game.winner == "" and w3 < 1500: + await frames(1) + w3 += 1 + if b.game.winner != "": + check(b.game.winner == "human" and b.game.log.any(func(l): return "verlassen" in l), "Trennung des Bots zählt als Aufgabe") + await frames(2) + check(b.overlay.visible, "Spielende angezeigt") + await click(find_button("Zurück zum Menü")) + else: + print("HINWEIS: Bot-Trennung nach 25 s noch nicht erkannt, Aufgeben stattdessen") + await give_up() + check(screen() is MenuScreen and not main.net.connected, "Netzwerk getrennt, zurück im Menü") + + +func test_kampagne() -> void: + await click(find_button("Kampagne")) + var scr = screen() + check(scr is CampaignScreen, "Kampagne geöffnet") + await shot("15_kampagne") + check(find_button("Gesperrt") != null and find_button("Kämpfen") != null, "Stufen gesperrt und offen") + await click(find_button("Kämpfen")) + var battle = screen() + check(battle is BattleScreen and battle.stage == 0, "Kampagnenkampf gestartet") + check(battle.game.opponents.size() == 1 and battle.game.opponents[0].name == "Fenn", "Fenn ist der Gegner") + await shot("16_kampagne_kampf") + await give_up() + + +func test_kampf(n_opp: int, shot_turn: int) -> void: + await start_battle(n_opp) + var scr = screen() + check(scr is BattleScreen, "Kampfbildschirm") + scr.ai_delay = 0.0 + var g: Game = scr.game + check(g.opponents.size() == n_opp and g.log[0].begins_with("Zugreihenfolge"), "Spiel gestartet, Reihenfolge ausgelost") + await wait_for_human(scr) + check(g.current() == g.human and g.human.mulligan_done, "Spieler ist dran, Mulligan erledigt") + check(scr.hand_views.size() == g.human.hand.size(), "Handkarten sichtbar") + await shot("07_kampf_start") + var coins: int = main.profile.coins + var guard := 0 + while g.winner == "" and guard < 60: + guard += 1 + var turn_before := g.turn + await human_turn(scr) + if g.winner != "": + break + check(g.current() != g.human or g.turn > turn_before, "Zug beendet") + var wait := 0 + while g.current() != g.human and g.winner == "" and wait < 600: + await frames(1) + wait += 1 + if guard == shot_turn: + await shot("08_kampf_zug%d" % (shot_turn + 1)) + check(g.winner != "", "Spiel beendet") + await frames(3) + await shot("09_kampf_ende") + check(scr.reward > 0 and main.profile.coins >= coins + scr.reward, "Belohnung gutgeschrieben") + check(Profile.load_or_new(SAVE).coins == main.profile.coins, "Belohnung gespeichert") + await click(find_button("Zurück zum Menü")) + check(screen() is MenuScreen, "zurück im Menü") + + +func test_kampf_abbrechen() -> void: + await start_battle(5) + var scr = screen() + scr.ai_delay = 0.0 + var g: Game = scr.game + await wait_for_human(scr) + check(g.opponents.size() == 5 and g.human.max_energy == 1, "5 Gegner") + # Falle legen und Kombo-Hinweis prüfen + g.human.hand.append(Cards.by_id("f_falle")) + g.human.energy = 10 + var wolf := Game.Creature.new(Cards.by_id("f_wolf"), g.human, 9000) + g.human.board.append(wolf) + g.human.hand.append(Cards.by_id("w_reiter")) + scr.refresh() + var trap_view = scr.hand_views.filter(func(v): return v.card.id == "f_falle")[0] + await click(trap_view) + check(g.human.traps.size() == 1 and scr.trap_views.size() == 1, "Falle gelegt und sichtbar") + var reiter_view = scr.hand_views.filter(func(v): return v.card.id == "w_reiter")[0] + await hover(reiter_view) + var hint_boxes = scr.preview_holder.get_children().filter(func(c): return c is RichTextLabel) + check(hint_boxes.size() == 1 and "Feldkombo Dampf" in hint_boxes[0].text, "Kombo-Hinweis in der Vorschau") + await shot("21_kampf_falle_hinweis") + var spells: Array = scr.hand_views.filter(func(v): return v.card.target_type() != "" and g.can_play(g.human, v.card)[0]) + if not spells.is_empty(): + var card: Cards.Card = spells[0].card + await click(spells[0]) + check(scr.pending == card, "Ziel wird erwartet") + await right_click() + check(scr.pending == null and card in g.human.hand, "Rechtsklick bricht ab") + await hover(scr.hand_views[0]) + check(scr.preview_holder.get_child_count() > 0, "Vorschau bei Hover") + await click(find_button("Lupe")) + check(scr.zoom_player == scr.others()[0], "Lupe öffnet die erste Spalte") + await shot("12_lupe") + await click(find_button("Schließen")) + check(scr.zoom_player == null, "Lupe geschlossen") + # Runden laufen lassen, damit die Gegner ihre Züge machen + for round in 4: + await click(scr.b_end) + var wait := 0 + while g.current() != g.human and g.winner == "" and wait < 600: + await frames(1) + wait += 1 + var ai_attacked: bool = g.log.any(func(l): return l.begins_with("Gegner") and " spielt " in l) \ + and g.log.any(func(l): return " greift " in l) + check(ai_attacked, "Gegner spielen Karten und greifen an") + check(scr.tiles.size() == g.players.reduce(func(acc, p): return acc + p.board.size(), 0), "eine Kachel je Wesen") + await shot("10_kampf_fuenf") diff --git a/tests/ui_test.gd.uid b/tests/ui_test.gd.uid new file mode 100644 index 0000000..2c930e7 --- /dev/null +++ b/tests/ui_test.gd.uid @@ -0,0 +1 @@ +uid://ci5hglrkyevqi diff --git a/tests/ui_test.tscn b/tests/ui_test.tscn new file mode 100644 index 0000000..f32e8c4 --- /dev/null +++ b/tests/ui_test.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3] + +[ext_resource type="Script" path="res://tests/ui_test.gd" id="1"] + +[node name="UITest" type="Node"] +script = ExtResource("1") diff --git a/translations/ui.csv b/translations/ui.csv new file mode 100644 index 0000000..87d4165 --- /dev/null +++ b/translations/ui.csv @@ -0,0 +1,59 @@ +keys,en +Dinger,Dinger +Ein Kartenspiel: jeder gegen jeden,A card game: free-for-all +Einzelspieler,Single player +Kampagne,Campaign +Lokal zu mehreren,Local multiplayer +Netzwerkspiel,Network game +Booster öffnen,Open boosters +Deck bauen,Build deck +Werkstatt,Workshop +Erfolge,Achievements +Regeln,Rules +Einstellungen,Settings +Anleitung,Tutorial +Beenden,Quit +Zurück,Back +Weiter,Continue +Start,Start +Speichern,Save +Leeren,Clear +Suche,Search +Fehlende,Missing +Alle,All +Aktiv setzen,Set active +Auto-Ausfüllen,Auto-fill +Umbenennen,Rename +Zug beenden,End turn +Aufgeben,Surrender +Weiterspielen,Keep playing +"Ja, aufgeben","Yes, surrender" +Wirklich aufgeben?,Really surrender? +Der Kampf endet ohne Münzen.,The battle ends without coins. +Zurück zum Menü,Back to menu +Lupe,Zoom +Schließen,Close +Held als Ziel,Target hero +Verlauf,Log +Karte überfahren für Details,Hover a card for details +Lautstärke,Volume +Musik,Music +KI-Tempo,AI speed +Animationen,Animations +Sprache,Language +Booster,Boosters +Booster kaufen (100 Münzen),Buy booster (100 coins) +Alle aufdecken,Reveal all +Zerlegen,Dismantle +Herstellen,Craft +Kämpfen,Fight +Wiederholen,Replay +Gesperrt,Locked +Spiel eröffnen,Host game +Beitreten,Join +Behalten,Keep +Tauschen,Swap +Hand tauschen?,Swap cards? +Klicke Karten an die du zurücklegen willst. Einmal pro Partie.,Click the cards you want to put back. Once per game. +Fallen,Traps +Du bist dran,Your turn diff --git a/translations/ui.csv.import b/translations/ui.csv.import new file mode 100644 index 0000000..a784d29 --- /dev/null +++ b/translations/ui.csv.import @@ -0,0 +1,19 @@ +[remap] + +importer="csv_translation" +type="Translation" +uid="uid://bcfsui5t8peik" + +[deps] + +files=["res://translations/ui.en.translation"] + +source_file="res://translations/ui.csv" +dest_files=["res://translations/ui.en.translation"] + +[params] + +compress=1 +delimiter=0 +unescape_keys=false +unescape_translations=true diff --git a/translations/ui.en.translation b/translations/ui.en.translation new file mode 100644 index 0000000000000000000000000000000000000000..39c379a02eb46161612a42c2c5ca3367a0b8e131 GIT binary patch literal 2608 zcma)84Qv!u5Pog(ELY2qgwjG&j+7RQ&>lZEv4BT=RD>?cRF49w#%#Ak2>f7GNacj%cB#&??bitq5UN610#U20bv6FuhXnX-3D4NmDuZ zf9An(N(U5Cm7|JJY>;H1AT?-mgX$B*A{%11g@q=O(TXNfRfT}4#`24;5Lp`dh!j<@ zT8T=c+8{TJiW2gRECrUJpavT>VW}jtRH#d%zD7|qh-46|ri8+Qfq<${2}LxJj3ofs zKx~hqf`SM2pdqLTQH43l7vn!$Mg4pPumJ)UuK@V=pcY|Q4kTs{ul z$%ojvUl)AN16P2nhW~YACZ8V2_W=uH&f8_v?}ieJKbQ&-Wd#UJ`^K)kAT)f5nlM3)KcsHqQUNDYth&lw@#}3+KD5WOZ204=s;!v0|N5-r%_pFf59K9iesr_m$dfppkKbjV zb^tnG_xm{Kr6Ui>XV>lCV_D!Smihd)Jl7rR2S;aNzV8`j%JO6I=XLV^&bH>ynPJ4B zIM3uH?8`Up$NfBG_k6Psc3$V(`|gd{1fA!JC9%3Y*B_LAgc8rE{8M!@0-pDu`wOp~ zb037l`_21jv9txgM@*jYyA>zAr{G6-kFfmo>xILS9KVk|&&%Bl9B;wS;~hA9qmSNG z^u8u=zcn}SIc6aq=MS#TzkVG$J)4C9#29{<{pIHrYXmSF;On=qZTstM=scg*8GVyl zuqeL1(V6h|yFSz>row+XxUs%Im6W-ROnUDKtfd zP$10oN=s(#>fE$>Gh_U-qP9X-8f^jkvDV$)d5bKTsxelbl|)05-{u#6jjRR^YEX_~ zhc}ZG<@-r6d+0}-c|}c&{SfQbofDI5b+#ZH(pZUrMNT;kQ&ePLO;9xE6`Donlte+n zB0=#5nO>E1p;~9fl7uu9vv19lp+q%#^0E*pj~M%W(C0Xkb_}LMc8r@vHCEi5iGo~^ z>Yf^JHAv6O_Oh7VpWtBS^%Ih64$T_1aB+5Ys5K1Fl3RMCXZ5sPoh_2(CS)P2sI}UC zH+z*uXO(h*>E)Jd+cMo*rSBwm{fX)p%2E{lsEVo~A1j_~QzN42NBM)Vo*fHwr4SB8 z@kPT*WLecjMa3SuWz@Mf{Yg(uvD^0#we~0EG2N3W*JiXMh0>hE^J{Plim*&$u23MT zp~8qHv|xLD+xS^I0u3C(JUJ9*6`~kn-W9^YKbucb{HlZL&YhWhW9r}T^ikf$pUn5P mcGjb`7Tx_@N_PcL9>wBoFM@RHei}k;!=Sr@>%=_xR{R%5A(&JE literal 0 HcmV?d00001