模板脚本文件
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user