52 lines
1.1 KiB
GDScript
52 lines
1.1 KiB
GDScript
class_name PauseMenu extends Control
|
|
|
|
signal opened
|
|
signal closed
|
|
|
|
@export var MAIN:PauseMain
|
|
@export var settingsPanel:PauseSettings
|
|
|
|
func _ready() -> void:
|
|
close()
|
|
MAIN.resumeRequested.connect(close)
|
|
MAIN.settingsRequested.connect(_openSettings)
|
|
UI.MAIN_MENU_DIALOG.confirmed.connect(_goToMainMenu)
|
|
|
|
func isOpen() -> bool:
|
|
return visible
|
|
|
|
func open() -> void:
|
|
visible = true
|
|
get_tree().paused = true
|
|
MAIN.open()
|
|
opened.emit()
|
|
|
|
func close() -> void:
|
|
get_tree().paused = false
|
|
visible = false
|
|
MAIN.close()
|
|
settingsPanel.close()
|
|
closed.emit()
|
|
|
|
func _openSettings() -> void:
|
|
MAIN.close()
|
|
settingsPanel.open()
|
|
|
|
func _goToMainMenu() -> void:
|
|
close()
|
|
SCENE.setScene(SceneSingleton.SceneType.INITIAL)
|
|
|
|
func _unhandled_input(event:InputEvent) -> void:
|
|
if !visible:
|
|
return
|
|
if !event.is_action_pressed("ui_cancel"):
|
|
return
|
|
if (UI.QUIT_DIALOG != null and UI.QUIT_DIALOG.isOpen) or (UI.MAIN_MENU_DIALOG != null and UI.MAIN_MENU_DIALOG.isOpen):
|
|
return
|
|
if settingsPanel.isOpen():
|
|
settingsPanel.close()
|
|
MAIN.open()
|
|
else:
|
|
close()
|
|
get_viewport().set_input_as_handled()
|