extends Control ## Menu shown in-game when the user presses pause. @export_category("Game Scenes") @export_file("*.tscn") var title_scene: String @export var settings_scene: PackedScene @export var debug_scene: PackedScene var _freeze_input := false @onready var menu_list: Control = %MenuList @onready var quit_confirm: Control = %QuitConfirm @onready var end_game_confirm: Control = %EndGameConfirm @onready var settings_container: Container = %SettingsContainer @onready var debug_button: Button = %DebugButton @onready var debug_container: MarginContainer = %DebugContainer func _ready() -> void: Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) Engine.time_scale = 1.0 if Game.settings.enable_debug_menu: debug_button.show() func _unhandled_key_input(event: InputEvent) -> void: if not _freeze_input and event.is_action_pressed("pause"): get_viewport().set_input_as_handled() resume() func _unhide() -> void: menu_list.show() func _hide() -> void: menu_list.hide() func resume() -> void: GlobalSFXManager.confirm.play() Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) queue_free() func settings() -> void: GlobalSFXManager.confirm.play() var instance: Control = settings_scene.instantiate() settings_container.add_child(instance) instance.tree_exited.connect(_unhide) _hide() func quit() -> void: GlobalSFXManager.confirm.play() quit_confirm.show() func cancel_quit() -> void: GlobalSFXManager.cancel.play() quit_confirm.hide() func confirm_quit() -> void: GlobalSFXManager.confirm.play() get_tree().root.propagate_notification(NOTIFICATION_WM_CLOSE_REQUEST) func end_game() -> void: GlobalSFXManager.confirm.play() end_game_confirm.show() func cancel_end_game() -> void: GlobalSFXManager.cancel.play() end_game_confirm.hide() func confirm_end_game() -> void: GlobalSFXManager.confirm.play() # TODO transition Game.instance.queue_scene(title_scene) func debug_menu() -> void: var instance: Control = debug_scene.instantiate() debug_container.add_child(instance) instance.tree_exited.connect(_unhide) _hide()