38 lines
1.8 KiB
GDScript
38 lines
1.8 KiB
GDScript
class_name StartDeckScreen
|
|
extends Control
|
|
## Erster Start: eines von vier Startdecks wählen, je eines mit einem Element im Mittelpunkt
|
|
## (25 Karten davon, je fünf der anderen). Danach geht es ins Menü.
|
|
|
|
var app
|
|
|
|
|
|
func _ready() -> void:
|
|
Style.label(self, tr("Wähle dein Startdeck"), 40, Style.GOLD, Rect2(0, 60, 1280, 60), "center", true)
|
|
Style.label(self, tr("25 Karten des Elements, dazu je fünf der anderen. Booster und Werkstatt bringen später den Rest."), 17, Style.MUTED, Rect2(140, 124, 1000, 30), "center")
|
|
for i in Cards.ELEMENTS.size():
|
|
var e: String = Cards.ELEMENTS[i]
|
|
var x := 70 + i * 290
|
|
var col: Color = Cards.ELEMENT_COLORS[e]
|
|
Style.panel(self, Rect2(x, 190, 260, 470), Style.darker(col, 0.75), 12, col, 2)
|
|
var ids := DeckGen.start_deck(e)
|
|
var sample: Array = ids.filter(func(id): return Cards.by_id(id).elements[0] == e)
|
|
sample.sort_custom(func(a, b): return Cards.by_id(a).cost > Cards.by_id(b).cost)
|
|
for k in 3:
|
|
var c: Cards.Card = Cards.by_id(sample[k * 7])
|
|
var v := CardView.new(c, Vector2(110, 140), false, "Common")
|
|
v.position = Vector2(x + 20 + k * 40, 210 + k * 14)
|
|
v.rotation_degrees = -6 + k * 6
|
|
v.mouse_filter = Control.MOUSE_FILTER_IGNORE
|
|
add_child(v)
|
|
Style.label(self, tr(e), 28, Style.TEXT, Rect2(x, 400, 260, 40), "center", true)
|
|
Style.label(self, tr(Cards.KEYWORD_TEXT[Cards.ELEMENT_KEYWORD[e]]), 15, Style.MUTED, Rect2(x + 16, 446, 228, 60), "center")
|
|
var b := Style.button(self, tr("%s wählen") % tr(e), Rect2(x + 30, 590, 200, 50), choose.bind(e), Style.PRIMARY)
|
|
b.add_theme_font_size_override("font_size", 18)
|
|
|
|
|
|
func choose(element: String) -> void:
|
|
app.profile.choose_start(element)
|
|
app.save()
|
|
app.sfx.play("combo")
|
|
app.show_screen(MenuScreen.new())
|