class_name OpponentSelectScreen extends Control ## Einzelspieler: Schwierigkeit und Gegnerzahl. Gegnerdecks werden auf die eigene Deckstärke gebaut. var app var rating_label: Label var diff_buttons := {} func _ready() -> void: var col := Style.column(self, 900, 40, 12) Style.clabel(col, "Einzelspieler", 36, Style.GOLD, "center", true) Style.clabel(col, "Jeder kämpft gegen jeden, alle nach denselben Regeln mit %d Leben. Du gewinnst, wenn alle anderen besiegt sind." % Game.START_LIFE, 16, Style.MUTED) Style.spacer(col, 4) Style.clabel(col, "Schwierigkeit", 20, Style.TEXT, "center", true) var dr := Style.row(col, 10) dr.alignment = BoxContainer.ALIGNMENT_CENTER for key in ["leicht", "normal", "schwer"]: var k: String = key diff_buttons[k] = Style.cbutton(dr, Profile.DIFFICULTIES[k].name, Vector2(150, 42), func(): set_difficulty(k)) rating_label = Style.clabel(col, "", 15, Style.MUTED) Style.spacer(col, 4) 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, 50), 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, 10) var br := Style.row(col) br.alignment = BoxContainer.ALIGNMENT_CENTER Style.cbutton(br, "Zurück", Vector2(160, 44), func(): app.show_screen(MenuScreen.new())) refresh() func set_difficulty(key: String) -> void: app.profile.settings.difficulty = key app.save() refresh() func refresh() -> void: var p: Profile = app.profile var d := p.difficulty() for key in diff_buttons: var b: Button = diff_buttons[key] var active: bool = key == p.settings.difficulty b.add_theme_stylebox_override("normal", Style.box(Color("285a3c") if active else Style.PANEL_LIGHT, 8, Style.GOLD if active else Style.MUTED, 2)) b.add_theme_stylebox_override("hover", Style.box(Style.lighter(Color("285a3c") if active else Style.PANEL_LIGHT), 8, Style.GOLD if active else Style.MUTED, 2)) var arche: String = tr("schwache Archetypen") if d.tier == "leicht" else (tr("starke Archetypen") if d.tier == "schwer" else tr("alle Archetypen")) rating_label.text = tr("Deine Deckstärke %.1f · Gegnerdecks %.1f · %s · Münzen x%.2f · KI: %s") % [ Game.deck_rating(p.deck_cards()), p.target_rating(), arche, d.reward, tr("Vorausschau") if d.smart else tr("einfach")] func _input(event: InputEvent) -> void: if event is InputEventKey and event.pressed and event.keycode == KEY_ESCAPE: app.show_screen(MenuScreen.new())