2026-09-14 18:36:02 +02:00
|
|
|
extends Control
|
2026-09-14 19:08:00 +02:00
|
|
|
## Blinky death screen + absurd revive (Nein=revive, Ja=quit).
|
2026-09-14 18:36:02 +02:00
|
|
|
|
|
|
|
|
@onready var title: Label = $Title
|
|
|
|
|
@onready var cause: Label = $Cause
|
2026-09-14 19:08:00 +02:00
|
|
|
@onready var btn_revive: Button = $ReviveButton
|
|
|
|
|
@onready var btn_no: Button = $NoButton
|
|
|
|
|
@onready var btn_yes: Button = $YesButton
|
|
|
|
|
@onready var hint: Label = $Hint
|
2026-09-15 12:02:57 +02:00
|
|
|
@onready var skull: TextureRect = $Skull
|
2026-09-14 19:08:00 +02:00
|
|
|
@onready var bg: ColorRect = $Bg
|
2026-09-14 18:36:02 +02:00
|
|
|
|
|
|
|
|
var _blink: float = 0.0
|
|
|
|
|
var _skull_timer: float = 0.0
|
2026-09-14 19:08:00 +02:00
|
|
|
var _colors: Array[Color] = [
|
|
|
|
|
Color(0.05, 0.05, 0.05),
|
|
|
|
|
Color(0.9, 0.1, 0.4),
|
|
|
|
|
Color(0.1, 0.8, 0.3),
|
|
|
|
|
Color(0.2, 0.3, 1.0),
|
|
|
|
|
Color(1.0, 0.8, 0.1),
|
|
|
|
|
]
|
2026-09-14 18:36:02 +02:00
|
|
|
|
|
|
|
|
func _ready() -> void:
|
|
|
|
|
GameState.current_scene_id = "death_screen"
|
2026-09-14 19:08:00 +02:00
|
|
|
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
|
2026-09-14 18:36:02 +02:00
|
|
|
_refresh()
|
|
|
|
|
Locale.locale_changed.connect(_refresh)
|
|
|
|
|
skull.visible = false
|
2026-09-15 12:02:57 +02:00
|
|
|
SpriteFit.apply_texture_rect_budget(skull, SpriteFit.UI_POPUP_PX)
|
2026-09-14 18:36:02 +02:00
|
|
|
|
|
|
|
|
func _refresh() -> void:
|
|
|
|
|
title.text = Locale.tr_key("death_title")
|
|
|
|
|
cause.text = Locale.tr_key(GameState.last_death_cause_key)
|
2026-09-14 19:08:00 +02:00
|
|
|
btn_revive.text = Locale.tr_key("death_revive")
|
|
|
|
|
btn_no.text = Locale.tr_key("death_no")
|
|
|
|
|
btn_yes.text = Locale.tr_key("death_yes")
|
|
|
|
|
hint.text = Locale.tr_key("death_no_hint") + "\n" + Locale.tr_key("death_yes_hint")
|
2026-09-14 18:36:02 +02:00
|
|
|
|
|
|
|
|
func _process(delta: float) -> void:
|
|
|
|
|
_blink += delta
|
2026-09-14 19:08:00 +02:00
|
|
|
var idx := int(_blink) % _colors.size()
|
|
|
|
|
bg.color = _colors[idx]
|
2026-09-14 18:36:02 +02:00
|
|
|
_skull_timer += delta
|
2026-09-15 12:02:57 +02:00
|
|
|
if skull.visible:
|
|
|
|
|
if _skull_timer >= 1.0:
|
|
|
|
|
skull.visible = false
|
|
|
|
|
_skull_timer = 0.0
|
|
|
|
|
elif _skull_timer >= 10.0:
|
2026-09-14 18:36:02 +02:00
|
|
|
skull.visible = true
|
2026-09-15 12:02:57 +02:00
|
|
|
_skull_timer = 0.0
|
2026-09-14 18:36:02 +02:00
|
|
|
|
2026-09-14 19:08:00 +02:00
|
|
|
func _on_revive_pressed() -> void:
|
|
|
|
|
GameState.revive_continue()
|
|
|
|
|
|
|
|
|
|
func _on_no_pressed() -> void:
|
|
|
|
|
## Satire: Nein = trotzdem wiederbeleben
|
|
|
|
|
GameState.revive_continue()
|
|
|
|
|
|
|
|
|
|
func _on_yes_pressed() -> void:
|
|
|
|
|
## Satire: Ja = Spiel beenden → Title
|
|
|
|
|
GameState.quit_to_title()
|