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()