Randoloot/scripts/ui/defeat_overlay.gd
2026-10-25 16:12:08 +01:00

67 lines
2.5 KiB
GDScript

extends CanvasLayer
var ship: CharacterBody2D
var _retrying := false
func _ready() -> void:
layer = preload("res://scripts/ui/render_layers.gd").DEFEAT
name = "DefeatOverlay"
var root := Control.new()
add_child(root)
root.set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT)
var shade := ColorRect.new()
shade.color = Color(0.015, 0.025, 0.045, 0.55)
root.add_child(shade)
shade.set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT)
var center := CenterContainer.new()
root.add_child(center)
center.set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT)
var panel := PanelContainer.new()
panel.custom_minimum_size.x = 390
var style := StyleBoxFlat.new()
style.bg_color = Color("0b152094")
style.border_color = Color("bf604d")
style.set_border_width_all(1)
style.border_width_top = 3
style.set_content_margin_all(24)
style.set_corner_radius_all(5)
panel.add_theme_stylebox_override("panel", style)
center.add_child(panel)
var contents := VBoxContainer.new()
contents.add_theme_constant_override("separation", 14)
panel.add_child(contents)
var title := Label.new()
title.text = "STATEK ZNISZCZONY"
title.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
title.add_theme_font_size_override("font_size", 16)
title.add_theme_color_override("font_color", Color("ffae8c"))
contents.add_child(title)
var note := Label.new()
note.text = "Układ %d\nWyposażenie i zapasy zostają zachowane." % GameState.system_level
if not GameState.active_distant_map.is_empty():
note.text = "Wyprawa zakończona. Mapa została zużyta.\nPowrót do układu %d.\nWyposażenie i zapasy zostają zachowane." % int(GameState.distant_home.get("level",1))
note.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
note.add_theme_font_size_override("font_size", 11)
note.add_theme_color_override("font_color", Color("a6bdce"))
contents.add_child(note)
var retry := Button.new()
retry.name = "RetryButton"
retry.text = "SPRÓBUJ PONOWNIE [R]"
if not GameState.active_distant_map.is_empty():
retry.text = "WRÓĆ DO UKŁADU %d [R]" % int(GameState.distant_home.get("level",1))
preload("res://scripts/ui/hud_button_style.gd").apply(retry)
var key := InputEventKey.new()
key.physical_keycode = KEY_R
retry.shortcut = Shortcut.new()
retry.shortcut.events = [key]
retry.pressed.connect(_retry)
contents.add_child(retry)
root.modulate.a = 0
create_tween().tween_property(root, "modulate:a", 1.0, 0.3)
func _retry() -> void:
if _retrying or not is_instance_valid(ship):
return
_retrying = true
ship.call("_restart_level_after_destruction")