32 lines
1.1 KiB
GDScript
32 lines
1.1 KiB
GDScript
class_name SettingsMenu extends Control
|
|
|
|
@export var tabs:TabBar
|
|
@export var tabControls:Array[Control]
|
|
@export var checkInvertX:CheckBox
|
|
@export var checkInvertY:CheckBox
|
|
|
|
func _ready() -> void:
|
|
tabs.tab_changed.connect(onTabChanged)
|
|
checkInvertX.button_pressed = SETTINGS.invertCameraX
|
|
checkInvertY.button_pressed = SETTINGS.invertCameraY
|
|
checkInvertX.toggled.connect(func(v:bool): SETTINGS.invertCameraX = v)
|
|
checkInvertY.toggled.connect(func(v:bool): SETTINGS.invertCameraY = v)
|
|
onTabChanged(tabs.current_tab)
|
|
|
|
func _notification(what:int) -> void:
|
|
if what == NOTIFICATION_VISIBILITY_CHANGED and visible:
|
|
tabs.grab_focus()
|
|
|
|
func onTabChanged(tabIndex:int) -> void:
|
|
for control in tabControls:
|
|
control.visible = false
|
|
if tabIndex >= 0 and tabIndex < tabControls.size():
|
|
tabControls[tabIndex].visible = true
|
|
_focusFirstIn(tabControls[tabIndex])
|
|
|
|
func _focusFirstIn(container:Control) -> void:
|
|
for child in container.get_children():
|
|
if child is Control and child.focus_mode != Control.FOCUS_NONE:
|
|
child.grab_focus()
|
|
return
|