class_name OpponentSelectScreen extends Control ## Einzelspieler: Schwierigkeit wählen und ein Duell starten. Die Karten kommen im Kampf ## vom gemeinsamen Stapel (siehe Game.start). var app var diff_buttons := {} var info_label: Label func _ready() -> void: Style.header(self, "Einzelspieler", func(): app.show_screen(MenuScreen.new())) var col := Style.column(self, 1000, 170, 12) Style.clabel(col, "Schwierigkeit", 20, Style.TEXT, "center", true) var dr := Style.row(col, 10) dr.alignment = BoxContainer.ALIGNMENT_CENTER for key in Profile.DIFFICULTIES: var k: String = key diff_buttons[k] = Style.cbutton(dr, Profile.DIFFICULTIES[k].name, Vector2(150, 40), func(): set_difficulty(k)) info_label = Style.clabel(col, "", 15, Style.MUTED) Style.spacer(col, 24) var br := Style.row(col, 16) br.alignment = BoxContainer.ALIGNMENT_CENTER var b := Style.cbutton(br, "Starten", Vector2(260, 56), start, Style.PRIMARY) b.add_theme_font_size_override("font_size", 22) refresh() func _input(event: InputEvent) -> void: if event.is_action_pressed("ui_cancel"): app.show_screen(MenuScreen.new()) func set_difficulty(key: String) -> void: app.profile.settings.difficulty = key app.save() refresh() func start() -> void: app.show_screen(BattleScreen.new()) func refresh() -> void: var p: Profile = app.profile for key in diff_buttons: _mark(diff_buttons[key], key == p.settings.difficulty) var d := p.difficulty() info_label.text = tr("Gegner mit %d Leben · %d Münzen bei Sieg") % [int(d.life), int(round(Profile.REWARD_WIN * float(d.reward)))] func _mark(b: Button, active: bool, col: Color = Color("285a3c")) -> void: var base: Color = col if active else Style.PANEL_LIGHT b.add_theme_stylebox_override("normal", Style.box(base, 8, Style.GOLD if active else Style.MUTED, 2))