extends Control signal exit # if true, options screen can not exit var can_exit: bool = true onready var tabs: TabContainer = $"%Tabs" onready var select_tab: HBoxContainer = $"%SelectTab" # options nodes onready var rumble: HBoxContainer = $"%SelectRumble" onready var gore: HBoxContainer = $"%SelectGore" onready var fullscreen: HBoxContainer = $"%SelectFullscreen" onready var window_size: HBoxContainer = $"%SelectWindowSize" onready var scaling: HBoxContainer = $"%SelectScaling" onready var fade_speed: HBoxContainer = $"%SelectFadeSpeed" onready var border: Button = $"%SelectBorder" onready var scanlines: HBoxContainer = $"%SelectScanlines" onready var master_vol: HSlider = $"%SelectMasterVol" onready var music_vol: HSlider = $"%SelectMusicVol" onready var sound_vol: HSlider = $"%SelectSoundVol" onready var landing_sound: HBoxContainer = $"%SelectLandingSound" func _ready() -> void: get_scene_instance_load_placeholder() _init_values() func focus() -> void: select_tab.selection = 0 $"%SelectTab".grab_focus() _on_tab_selected(0) func _unhandled_input(event: InputEvent) -> void: Options.save_options() if can_exit and event.is_action_pressed("ui_cancel"): emit_signal("exit") func _init_values() -> void: # game rumble.selection = Options.rumble gore.selection = Options.gore # video fullscreen.selection = 1 if Options.fullscreen else 0 window_size.selection = int(Options.window_size) - 1 scaling.selection = Options.scaling_mode fade_speed.selection = Options.transition_speed border._update() scanlines.selection = Options.scanlines # audio master_vol.value = Options.master_volume * 100.0 music_vol.value = Options.music_volume * 100.0 sound_vol.value = Options.sound_volume * 100.0 landing_sound.selection = 1 if Options.landing_sound else 0 func _on_tab_selected(selection: int) -> void: tabs.current_tab = selection var tab = tabs.get_current_tab_control() var next = tab.get_node(tab.focus_next) if next: select_tab.focus_neighbour_bottom = select_tab.get_path_to(next) else: select_tab.focus_neighbour_bottom = @"." select_tab.update_focus_targets() # # GAME # func _on_Rumble_selected(selection) -> void: Options.rumble = selection func _on_Gore_selected(selection) -> void: Options.gore = selection # # VIDEO # func _on_Fullscreen_selected(selection) -> void: Options.fullscreen = selection == 1 # true if 1, false otherwise func _on_WindowSize_selected(selection) -> void: Options.window_size = float(selection + 1) func _on_Scaling_selected(selection) -> void: Options.scaling_mode = selection func _on_FadeSpeed_selected(selection) -> void: Options.transition_speed = selection func _on_Border_selected(selection) -> void: Options.border = selection func _on_Scanlines_selected(selection) -> void: Options.scanlines = selection # # AUDIO # func _on_MasterVol_value_changed(value: float) -> void: Options.master_volume = value * 0.01 func _on_MusicVol_value_changed(value: float) -> void: Options.music_volume = value * 0.01 func _on_SoundVol_value_changed(value: float) -> void: Options.sound_volume = value * 0.01 func _on_LandingSound_selected(selection) -> void: Options.landing_sound = selection == 1