first commit

This commit is contained in:
2026-07-20 22:48:58 +07:00
commit e80aea750e
599 changed files with 2375815 additions and 0 deletions
@@ -0,0 +1,62 @@
extends CanvasLayer
@onready var health_text = $HealthText
@onready var vignette = $Vignette
var health_component: Node = null
func _ready() -> void:
# Ищем HealthComponent у нашего игрока (родителя)
if get_parent():
health_component = get_parent().find_child("HealthComponent", true, false)
if health_component == null:
print("[UI ЗДОРОВЬЯ] КРИТИЧЕСКАЯ ОШИБКА: HealthComponent игрока не найден!")
# Изначально принудительно настраиваем видимость
if health_text:
health_text.visible = true
if vignette:
vignette.visible = false
func _process(delta: float) -> void:
if health_component == null:
return
var current_health = health_component.current_health
# 1. ОБНОВЛЯЕМ ЦИФРЫ НА ЭКРАНЕ
if health_text:
health_text.text = str(clamp(int(current_health), 0, 100))
# Красим цифры при низком здоровье
if current_health <= 30:
health_text.add_theme_color_override("font_color", Color.RED)
else:
health_text.add_theme_color_override("font_color", Color.WHITE)
# 2. УПРАВЛЯЕМ КРАСНОЙ ВИНЬЕТКОЙ
if vignette:
if current_health <= 30 and current_health > 0:
vignette.visible = true
# Эффект плавного биения сердца (пульсация)
var color_rect = vignette.get_node_or_null("ColorRect")
if color_rect:
color_rect.visible = true
var pulse = (sin(Time.get_ticks_msec() * 0.005) + 1.0) / 2.0
color_rect.modulate.a = lerp(0.3, 1.0, pulse)
else:
vignette.visible = false
# 3. АВТОРЕСТАРТ ПРИ СМЕРТИ (Перезагрузка уровня)
if current_health <= 0:
print("[UI ЗДОРОВЬЯ] Игрок погиб! Перезагружаю уровень через 2 секунды...")
# Отключаем процесс, чтобы не спамить перезагрузкой
set_process(false)
# Ждем 2 секунды, чтобы игрок успел понять, что умер
await get_tree().create_timer(2.0).timeout
# Мягко перезапускаем текущую сцену
get_tree().reload_current_scene()