Files
agame/scripts/ui/pause_menu_ui.gd
T
2026-09-12 22:18:23 +08:00

58 lines
1.2 KiB
GDScript

class_name PauseMenuUI
extends Control
signal resume_pressed
signal main_menu_pressed
signal quit_pressed
const SAFE_AREA_MARGIN := 16.0
@onready var resume_button: Button = $Overlay/Panel/MarginContainer/Buttons/Resume
@onready var panel: PanelContainer = $Overlay/Panel
func _ready() -> void:
resized.connect(_update_responsive_layout)
call_deferred("_update_responsive_layout")
hide()
func show_menu() -> void:
show()
call_deferred("_update_responsive_layout")
resume_button.grab_focus()
func hide_menu() -> void:
hide()
func is_menu_visible() -> bool:
return visible
func _update_responsive_layout() -> void:
if not panel:
return
var available_size := Vector2(
maxf(1.0, size.x - SAFE_AREA_MARGIN * 2.0), maxf(1.0, size.y - SAFE_AREA_MARGIN * 2.0)
)
var panel_size := panel.size
if panel_size.x <= 0.0 or panel_size.y <= 0.0:
return
var scale_factor := minf(1.0, minf(available_size.x / panel_size.x, available_size.y / panel_size.y))
panel.pivot_offset = panel_size * 0.5
panel.scale = Vector2.ONE * scale_factor
func _on_resume_pressed() -> void:
resume_pressed.emit()
func _on_main_menu_pressed() -> void:
main_menu_pressed.emit()
func _on_quit_pressed() -> void:
quit_pressed.emit()