Explosion_der_Spiele/scripts/levels/death_screen.gd

62 lines
1.7 KiB
GDScript3
Raw Permalink Normal View History

extends Control
## Blinky death screen + absurd revive (Nein=revive, Ja=quit).
@onready var title: Label = $Title
@onready var cause: Label = $Cause
@onready var btn_revive: Button = $ReviveButton
@onready var btn_no: Button = $NoButton
@onready var btn_yes: Button = $YesButton
@onready var hint: Label = $Hint
@onready var skull: TextureRect = $Skull
@onready var bg: ColorRect = $Bg
var _blink: float = 0.0
var _skull_timer: float = 0.0
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),
]
func _ready() -> void:
GameState.current_scene_id = "death_screen"
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
_refresh()
Locale.locale_changed.connect(_refresh)
skull.visible = false
SpriteFit.apply_texture_rect_budget(skull, SpriteFit.UI_POPUP_PX)
func _refresh() -> void:
title.text = Locale.tr_key("death_title")
cause.text = Locale.tr_key(GameState.last_death_cause_key)
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")
func _process(delta: float) -> void:
_blink += delta
var idx := int(_blink) % _colors.size()
bg.color = _colors[idx]
_skull_timer += delta
if skull.visible:
if _skull_timer >= 1.0:
skull.visible = false
_skull_timer = 0.0
elif _skull_timer >= 10.0:
skull.visible = true
_skull_timer = 0.0
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()