Files
CultManor/game/menu/completion_menu.gd
T
2026-01-09 00:36:16 +03:00

52 lines
1.5 KiB
GDScript

class_name CompletionMenu
extends Control
@onready var next_level_button : Button = $%NextLevelButton
@onready var main_menu_button : Button = $%MainMenuButton
@onready var focus_timer : Timer = $FocusTimer
func _get_next_level(remove := false) -> PackedScene:
if not get_tree().has_meta(AbstractLevel.NEXT_LEVEL_META): return null
var next_level : PackedScene = get_tree().get_meta(AbstractLevel.NEXT_LEVEL_META)
if remove:
get_tree().remove_meta(AbstractLevel.NEXT_LEVEL_META)
return next_level
func _on_gui_focus_changed(_node: Control) -> void:
SoundManager.play_ui_stream(SoundManager.ui_stream_select)
func _on_next_level_button_pressed() -> void:
SoundManager.play_ui_stream(SoundManager.ui_stream_accept)
get_tree().paused = false
get_tree().change_scene_to_packed(_get_next_level(true))
func _on_main_menu_button_pressed() -> void:
SoundManager.play_ui_stream(SoundManager.ui_stream_accept)
get_tree().paused = false
get_tree().change_scene_to_file("res://game/menu/main_menu.tscn")
func _on_visibility_changed() -> void:
if not is_node_ready(): return
if visible:
next_level_button.visible = _get_next_level() != null
focus_timer.start()
get_viewport().gui_focus_changed.connect(_on_gui_focus_changed)
else:
get_viewport().gui_focus_changed.disconnect(_on_gui_focus_changed)
func _on_focus_timer_timeout() -> void:
if next_level_button != null and next_level_button.visible:
next_level_button.grab_focus()
elif main_menu_button != null:
main_menu_button.grab_focus()