59 lines
2.1 KiB
GDScript
59 lines
2.1 KiB
GDScript
class_name OpponentSelectScreen
|
|
extends Control
|
|
## Einzelspieler: Schwierigkeit wählen und ein Duell starten. Der Gegner spielt ein Element aus den
|
|
## offenen Kapiteln in einer Stufe relativ zu deiner Deckstärke (Profile.single_opponent).
|
|
|
|
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()
|
|
var parts: Array[String] = [tr("Gegnerkarten: %s") % tr(Cards.RARITIES[p.opponent_level()]), tr("Vorausschau-KI") if bool(d.smart) else tr("einfache KI")]
|
|
if bool(d.perk):
|
|
parts.append(tr("ein Merkmal"))
|
|
parts.append(tr("Münzen %s") % Style.factor(float(d.reward)))
|
|
info_label.text = " · ".join(parts)
|
|
|
|
|
|
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))
|