Tales-of-PKMN/game/ui/options_menu/options_menu.gd
2026-10-13 10:12:12 +02:00

40 lines
1.1 KiB
GDScript

class_name OptionsMenu
extends Control
signal closed
# Pour ajouter un réglage : une ligne ici + une entrée dans Settings.DEFAULTS
var ROWS : Array[Dictionary] = [
{"label": "Volume général", "key": &"master_volume", "type": SliderRow},
{"label": "Musique", "key": &"music_volume", "type": SliderRow},
{"label": "Effets sonores", "key": &"sfx_volume", "type": SliderRow},
{"label": "Plein écran", "key": &"fullscreen", "type": ToggleRow},
]
@onready var rows : VBoxContainer = %Rows
@onready var back_button : Button = %Back
var _previous_focus : Control
func _ready() -> void:
hide()
for row in ROWS:
rows.add_child(row.type.new().setup(row.label, row.key))
back_button.pressed.connect(close)
func open() -> void:
_previous_focus = get_viewport().gui_get_focus_owner()
show()
(rows.get_child(0) as SettingRow).control.grab_focus()
func close() -> void:
Settings.save()
hide()
if is_instance_valid(_previous_focus): _previous_focus.grab_focus()
closed.emit()
func _input(event : InputEvent) -> void:
if visible and event.is_action_pressed("ui_cancel"):
close()
get_viewport().set_input_as_handled()