class_name ChallengeScreen extends Control ## Wöchentliche Herausforderung: feste Regelvariante mit einmaliger Belohnung. var app var msg: Label func _ready() -> void: var p: Profile = app.profile var ch := Challenge.current() var done: bool = p.challenge_week == Challenge.week() var col := Style.column(self, 760, 60, 14) Style.clabel(col, "Herausforderung der Woche", 36, Style.GOLD, "center", true) Style.clabel(col, "Jede Woche eine andere Regel. Die Belohnung gibt es einmal pro Woche, danach die normale.", 16, Style.MUTED) Style.spacer(col, 20) var panel := PanelContainer.new() panel.add_theme_stylebox_override("panel", Style.box(Style.PANEL, 10, Style.GREEN if done else Style.GOLD, 2)) col.add_child(panel) var inner := VBoxContainer.new() inner.add_theme_constant_override("separation", 10) panel.add_child(inner) Style.spacer(inner, 6) Style.clabel(inner, ch.name, 30, Style.TEXT, "center", true) Style.clabel(inner, ch.text, 18, Style.MUTED) Style.clabel(inner, "Belohnung: %d Münzen%s" % [ch.reward, " · diese Woche schon bestanden ✓" if done else ""], 16, Style.GOLD) Style.spacer(inner, 6) Style.spacer(col, 10) msg = Style.clabel(col, "", 16, Style.ORANGE) var deck_err := Challenge.deck_allowed(ch, p.deck_cards()) if deck_err != "": msg.text = deck_err + " (aktives Deck: %s)" % p.deck_name() var br := Style.row(col, 20) br.alignment = BoxContainer.ALIGNMENT_CENTER var b := Style.cbutton(br, "Antreten", Vector2(200, 50), func(): app.show_screen(BattleScreen.weekly(ch)), Color("285a3c")) b.disabled = deck_err != "" or not p.deck_valid()[0] Style.cbutton(br, "Zurück", Vector2(160, 50), 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())