extends Control const max_vol = 30 const min_vol = -30 onready var MasterValue = $Control/VBoxContainer/GridContainer/VolumeMasterContainer/VolumeMasterValue onready var MasterSlider = $Control/VBoxContainer/GridContainer/VolumeMasterContainer/VolumeMasterSlider onready var MusicValue = $Control/VBoxContainer/GridContainer/VolumeMusicContainer/VolumeMusicValue onready var MusicSlider = $Control/VBoxContainer/GridContainer/VolumeMusicContainer/VolumeMusicSlider onready var SFXValue = $Control/VBoxContainer/GridContainer/VolumeSFXContainer/VolumeSFXValue onready var SFXSlider = $Control/VBoxContainer/GridContainer/VolumeSFXContainer/VolumeSFXSlider func _ready(): # When scene is instanced, load the settings from singleton update_menu(global_variables.volume_master, MasterValue, MasterSlider) update_menu(global_variables.volume_music, MusicValue, MusicSlider) update_menu(global_variables.volume_sfx, SFXValue, SFXSlider) $Control/VBoxContainer/GridContainer/FullscreenCheckButton.set_pressed_no_signal(OS.window_fullscreen) func _input(event): if event.is_action_pressed("escape"): queue_free() func _on_ReturnButton_pressed(): queue_free() func _on_VolumeMasterSlider_value_changed(value): update_audio(value, 0, MasterSlider, "volume_master_enabled", "volume_master", MasterValue) func _on_VolumeMusicSlider_value_changed(value): update_audio(value, 1, MusicSlider, "volume_music_enabled", "volume_music", MusicValue) func _on_VolumeSFXSlider_value_changed(value): update_audio(value, 2, SFXSlider, "volume_sfx_enabled", "volume_sfx", SFXValue) func _on_FullscreenCheckButton_toggled(_button_pressed): OS.window_fullscreen = !OS.window_fullscreen func update_audio(value, bus, slider, enabled_var, volume_var, valuelabel): # Converts percentage into a range value var new_volume = ((value/100) * (max_vol - min_vol)) + min_vol global_variables.set(volume_var, new_volume) valuelabel.text = str(value) + "%" AudioServer.set_bus_volume_db(bus, new_volume) if value == slider.min_value: AudioServer.set_bus_mute(bus, true) global_variables.set(enabled_var, false) else: AudioServer.set_bus_mute(bus, false) global_variables.set(enabled_var, false) func update_menu(value, valuelabel, slider): # Converts stored range values back into a percentage value var percentage = ((float(value) - min_vol) / (max_vol - min_vol) ) * 100 valuelabel.text = str(percentage) + "%" slider.value = percentage