thegates/app/scripts/ui/world/not_responding.gd
2025-08-20 02:46:40 +07:00

57 lines
1.2 KiB
GDScript

extends Control
@export var gate_events: GateEvents
@export var history: History
@export var root: TextureButton
@export var reload: Button
@export var back: Button
@export var fade_in: float = 1.0
@export var fade_out: float = 0.2
const SHOWN = Color(1, 1, 1, 1)
const HIDDEN = Color(1, 1, 1, 0)
var tween: Tween
func _ready() -> void:
gate_events.not_responding.connect(show_message)
reload.pressed.connect(reload_gate)
root.pressed.connect(hide_message)
back.pressed.connect(Navigation.go_back)
visible = true
root.hide()
root.modulate = HIDDEN
root.mouse_filter = Control.MOUSE_FILTER_PASS
func show_message() -> void:
if root.visible: return
root.show()
if is_instance_valid(tween): tween.stop()
tween = get_tree().create_tween()
tween.tween_property(root, "modulate", SHOWN, fade_in)
await tween.finished
root.mouse_filter = Control.MOUSE_FILTER_STOP
func hide_message() -> void:
if not root.visible: return
root.mouse_filter = Control.MOUSE_FILTER_PASS
if is_instance_valid(tween): tween.stop()
tween = get_tree().create_tween()
tween.tween_property(root, "modulate", HIDDEN, fade_out)
await tween.finished
root.hide()
func reload_gate() -> void:
var location = history.get_current()
gate_events.open_gate_emit(location)