Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QPgKvy5W9WRNFHjkm5QsHx
43 lines
1.9 KiB
GDScript
43 lines
1.9 KiB
GDScript
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())
|