You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			64 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			GDScript
		
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			GDScript
		
	
| 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
 |