Erfolge entfernt, der Bildschirm zeigt nur noch Statistik

- Die dreizehn Erfolge samt Belohnungen, Meldungen und Spielstandfeld sind weg
- Der bisherige Erfolgs-Bildschirm heißt Statistik und zeigt Kämpfe, Tagesaufgabe,
  Bestenliste, beste Karten und den CSV-Export

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QPgKvy5W9WRNFHjkm5QsHx
This commit is contained in:
Team3
2026-09-17 21:37:58 +02:00
parent 43073351b0
commit 89db101137
11 changed files with 29 additions and 120 deletions

View File

@@ -93,7 +93,7 @@ func _initialize() -> void:
test_ki_besser_als_gierig()
test_ki_spiele_enden()
test_spielstand_migration()
test_erfolge_und_tagesaufgabe()
test_tagesaufgabe()
test_kampagne()
test_fallen()
test_ki_sieht_fallen_nicht()
@@ -648,29 +648,25 @@ 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.stats.games == 0 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(p2.stats.wins == 3 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:
func test_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")
check(p.coins == coins + reward + (p.daily_task().reward if p.daily.done else 0), "Münzen verbucht")
p.take_notices()
check(p.notices.is_empty(), "Meldungen abgeholt")
check(p.daily.date == "2026-09-16" and p.daily.task != "", "Tagesaufgabe gesetzt")
@@ -690,14 +686,12 @@ func test_erfolge_und_tagesaufgabe() -> void:
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")
@@ -719,7 +713,7 @@ func test_kampagne() -> void:
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")
check(p.campaign_stage == 10, "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:
@@ -1140,7 +1134,7 @@ func test_kapitel_zwei_und_merkmalwahl() -> void:
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")
check(p.campaign_stage == 20, "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")
@@ -1163,7 +1157,6 @@ func test_bestenliste() -> void:
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)