extends Node3D class_name UIManager @onready var ui_map: Dictionary = {"hud": $HudScreen, "status": $StatusScreen, "menu": $MenuScreen } var pause_count: int = 0 var top_ui_screen: Node func _ready(): Global.ui_mgr = self close_all() open("hud") func input_action(key: String, is_pressed: bool): if top_ui_screen: top_ui_screen.call("input_action", key, is_pressed) func input_dir(dir: Vector2): if top_ui_screen: top_ui_screen.call("input_dir", dir) func open(ui_name: String): set_ui_visible(ui_name, true) func close(ui_name: String): set_ui_visible(ui_name, false) func close_all(): for ui_name in ui_map: close(ui_name) func pause_open(ui_name: String): open(ui_name) set_pause(true) func pause_close(ui_name: String): close(ui_name) set_pause(false) func set_ui_visible(ui_name: String, is_visible: bool) -> void: if not ui_name in ui_map: return var ui_screen = ui_map[ui_name] ui_screen.visible = is_visible if is_visible: top_ui_screen = ui_screen print("top_ui_screen:", ui_name) return func set_pause(is_pause: bool): pause_count += 1 if is_pause else -1 is_pause = pause_count > 0 Global.is_control_pause = is_pause get_tree().paused = is_pause