Elemente, Kombos, Fallen, KI mit Vorausschau, Kampagne, Hotseat und Netzwerk, Werkstatt, Erfolge, Tagesaufgaben, Tests und Exporte. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QPgKvy5W9WRNFHjkm5QsHx
46 lines
2.1 KiB
GDScript
46 lines
2.1 KiB
GDScript
class_name AchievementsScreen
|
|
extends Control
|
|
|
|
var app
|
|
|
|
|
|
func _ready() -> void:
|
|
var p: Profile = app.profile
|
|
var col := Style.column(self, 900, 20, 5)
|
|
Style.clabel(col, "Erfolge", 36, Style.GOLD, "center", true)
|
|
var st: Dictionary = p.stats
|
|
Style.clabel(col, "Kämpfe %d · Siege %d · Booster %d · Kampagne %d/%d" % [
|
|
st.games, st.wins, st.boosters, p.campaign_stage, Campaign.STAGES.size()], 16, Style.MUTED)
|
|
var task := p.daily_task()
|
|
var daily_text: String = ("Tagesaufgabe erledigt: %s ✓" % task.text) if p.daily.done else \
|
|
"Tagesaufgabe: %s (%d/%d) · +%d Münzen" % [task.text, p.daily.progress, task.goal, task.reward]
|
|
Style.clabel(col, daily_text, 16, Style.BLUE)
|
|
Style.spacer(col, 8)
|
|
for a in Profile.ACHIEVEMENTS:
|
|
var done: bool = a.id in p.achievements
|
|
var panel := PanelContainer.new()
|
|
panel.add_theme_stylebox_override("panel", Style.box(Style.PANEL if done else Style.darker(Style.PANEL, 0.8), 6))
|
|
col.add_child(panel)
|
|
var r := Style.row(panel, 12)
|
|
r.custom_minimum_size = Vector2(0, 42)
|
|
Style.clabel(r, "✓" if done else "·", 22, Style.GREEN if done else Style.MUTED, "center", true, 40)
|
|
Style.clabel(r, a.name, 18, Style.TEXT if done else Style.MUTED, "left", true, 250)
|
|
Style.clabel(r, a.text, 15, Style.MUTED, "left", false, 380)
|
|
Style.clabel(r, "+%d" % a.reward, 16, Style.GOLD, "right", true, 90)
|
|
var top := p.top_cards(5)
|
|
if not top.is_empty():
|
|
Style.spacer(col, 4)
|
|
var parts: Array[String] = []
|
|
for row in top:
|
|
parts.append("%s %d/%d" % [row.card.name, row.wins, row.games])
|
|
Style.clabel(col, "Beste Karten (Siege/Partien): " + " · ".join(parts), 14, Style.MUTED)
|
|
Style.spacer(col, 6)
|
|
var br := Style.row(col)
|
|
br.alignment = BoxContainer.ALIGNMENT_CENTER
|
|
Style.cbutton(br, "Zurück", Vector2(160, 44), 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())
|