diff options
-rw-r--r-- | scenes/optionsmenu.tscn | 6 | ||||
-rw-r--r-- | scripts/optionsmenu.gd | 68 |
2 files changed, 35 insertions, 39 deletions
diff --git a/scenes/optionsmenu.tscn b/scenes/optionsmenu.tscn index e58dd5a..76968d7 100644 --- a/scenes/optionsmenu.tscn +++ b/scenes/optionsmenu.tscn @@ -63,8 +63,6 @@ rect_min_size = Vector2( 200, 0 ) margin_right = 150.0 margin_bottom = 16.0 rect_min_size = Vector2( 150, 0 ) -min_value = -50.0 -max_value = 50.0 [node name="VolumeMasterValue" type="Label" parent="Control/VBoxContainer/GridContainer/VolumeMasterContainer"] margin_left = 176.0 @@ -89,8 +87,6 @@ margin_bottom = 56.0 margin_right = 150.0 margin_bottom = 16.0 rect_min_size = Vector2( 150, 0 ) -min_value = -50.0 -max_value = 50.0 [node name="VolumeMusicValue" type="Label" parent="Control/VBoxContainer/GridContainer/VolumeMusicContainer"] margin_left = 176.0 @@ -115,8 +111,6 @@ margin_bottom = 76.0 margin_right = 150.0 margin_bottom = 16.0 rect_min_size = Vector2( 150, 0 ) -min_value = -50.0 -max_value = 50.0 [node name="VolumeSFXValue" type="Label" parent="Control/VBoxContainer/GridContainer/VolumeSFXContainer"] margin_left = 176.0 diff --git a/scripts/optionsmenu.gd b/scripts/optionsmenu.gd index 67e73c8..5ed17d8 100644 --- a/scripts/optionsmenu.gd +++ b/scripts/optionsmenu.gd @@ -1,13 +1,20 @@ 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 - $Control/VBoxContainer/GridContainer/VolumeMasterContainer/VolumeMasterValue.text = str(global_variables.volume_master + 50) + "%" - $Control/VBoxContainer/GridContainer/VolumeMasterContainer/VolumeMasterSlider.value = global_variables.volume_master - $Control/VBoxContainer/GridContainer/VolumeMusicContainer/VolumeMusicValue.text = str(global_variables.volume_music + 50) + "%" - $Control/VBoxContainer/GridContainer/VolumeMusicContainer/VolumeMusicSlider.value = global_variables.volume_music - $Control/VBoxContainer/GridContainer/VolumeSFXContainer/VolumeSFXValue.text = str(global_variables.volume_sfx + 50) + "%" - $Control/VBoxContainer/GridContainer/VolumeSFXContainer/VolumeSFXSlider.value = global_variables.volume_sfx + 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): @@ -18,37 +25,32 @@ func _on_ReturnButton_pressed(): queue_free() func _on_VolumeMasterSlider_value_changed(value): - global_variables.volume_master = value - AudioServer.set_bus_volume_db(0, value) - $Control/VBoxContainer/GridContainer/VolumeMasterContainer/VolumeMasterValue.text = str(value + 50) + "%" - if value == $Control/VBoxContainer/GridContainer/VolumeMasterContainer/VolumeMasterSlider.min_value: - AudioServer.set_bus_mute(0, true) - global_variables.volume_music_enabled = false - else: - AudioServer.set_bus_mute(0, false) - global_variables.volume_music_enabled = true + update_audio(value, 0, MasterSlider, "volume_master_enabled", "volume_master", MasterValue) func _on_VolumeMusicSlider_value_changed(value): - global_variables.volume_music = value - AudioServer.set_bus_volume_db(1, value) - $Control/VBoxContainer/GridContainer/VolumeMusicContainer/VolumeMusicValue.text = str(value + 50) + "%" - if value == $Control/VBoxContainer/GridContainer/VolumeMusicContainer/VolumeMusicSlider.min_value: - AudioServer.set_bus_mute(1, true) - global_variables.volume_music_enabled = false - else: - AudioServer.set_bus_mute(1, false) - global_variables.volume_music_enabled = true + update_audio(value, 1, MusicSlider, "volume_music_enabled", "volume_music", MusicValue) func _on_VolumeSFXSlider_value_changed(value): - global_variables.volume_sfx = value - AudioServer.set_bus_volume_db(2, value) - $Control/VBoxContainer/GridContainer/VolumeSFXContainer/VolumeSFXValue.text = str(value + 50) + "%" - if value == $Control/VBoxContainer/GridContainer/VolumeSFXContainer/VolumeSFXSlider.min_value: - AudioServer.set_bus_mute(2, true) - global_variables.volume_sfx_enabled = false - else: - AudioServer.set_bus_mute(2, false) - global_variables.volume_sfx_enabled = true + 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 |