diff --git a/common/game_data/scripts/settings_data.gd b/common/game_data/scripts/settings_data.gd index a0c738c..22ed73c 100644 --- a/common/game_data/scripts/settings_data.gd +++ b/common/game_data/scripts/settings_data.gd @@ -30,6 +30,11 @@ const AVAILABLE_LANGUAGES_LABEL = [ #region ------------------ Sound ------------------ +@export var master_volume : float = 1.0 : + set(v): + master_volume = v + sound_changed.emit(self) + @export var music_volume : float = 0.7 : set(v): music_volume = v diff --git a/common/game_info/game_info.gd b/common/game_info/game_info.gd index ed7cef3..5470524 100644 --- a/common/game_info/game_info.gd +++ b/common/game_info/game_info.gd @@ -92,6 +92,7 @@ func _on_settings_language_changed(s : SettingsData): update_language_settings(s) func _on_settings_sound_changed(s : SettingsData): + AudioServer.set_bus_volume_db(0, linear_to_db(s.master_volume)) AudioServer.set_bus_volume_db(SettingsData.MUSIC_BUS_ID, linear_to_db(s.music_volume)) AudioServer.set_bus_volume_db(SettingsData.SFX_BUS_ID, linear_to_db(s.sfx_volume)) AudioServer.set_bus_volume_db(SettingsData.AMBIANCE_BUS_ID, linear_to_db(s.ambiance_volume)) diff --git a/gui/menu/settings/scripts/settings.gd b/gui/menu/settings/scripts/settings.gd index 8781966..1a7c5cc 100644 --- a/gui/menu/settings/scripts/settings.gd +++ b/gui/menu/settings/scripts/settings.gd @@ -49,6 +49,7 @@ func setup_languages(): optionButton.selected = SettingsData.AVAILABLE_LANGUAGES.find(settings.language) func setup_sound(): + %MasterSlider.value = settings.master_volume %MusicSlider.value = settings.music_volume %EnvSlider.value = settings.ambiance_volume %SFXSlider.value = settings.sfx_volume @@ -83,20 +84,21 @@ func _on_language_option_button_item_selected(index: int): func _on_full_screen_check_box_toggled(toggled_on: bool): settings.full_screen = toggled_on -func _on_music_slider_value_changed(value: float): - if value != settings.music_volume: - %MusicTestPlayer.play() - settings.music_volume = min(1.0, value) +func _on_master_slider_drag_ended(_value_changed: bool) -> void: + %MasterTestPlayer.play() + settings.master_volume = clamp(%MasterSlider.value, 0.0, 1.0) -func _on_env_slider_value_changed(value: float): - if value != settings.ambiance_volume: - %AudioStreamPlayer.play() - settings.ambiance_volume = min(1.0, value) +func _on_music_slider_drag_endeded(_value_changed: bool) -> void: + %MusicTestPlayer.play() + settings.music_volume = clamp(%MusicSlider.value, 0.0, 1.0) -func _on_sfx_slider_value_changed(value: float): - if value != settings.sfx_volume: - %SfxTestPlayer.play() - settings.sfx_volume = min(1.0, value) +func _on_env_slider_drag_endeded(_value_changed: bool) -> void: + %AmbianceTestPlayer.play() + settings.ambiance_volume = clamp(%EnvSlider.value, 0.0, 1.0) + +func _on_sfx_slider_drag_endeded(_value_changed: bool) -> void: + %SfxTestPlayer.play() + settings.sfx_volume = clamp(%SFXSlider.value, 0.0, 1.0) func _on_auto_pickup_check_box_toggled(toggled_on: bool): settings.auto_pickup = toggled_on diff --git a/gui/menu/settings/settings.tscn b/gui/menu/settings/settings.tscn index 9eba4cc..35d92c3 100644 --- a/gui/menu/settings/settings.tscn +++ b/gui/menu/settings/settings.tscn @@ -87,6 +87,20 @@ title = "SOUND" layout_mode = 2 columns = 2 +[node name="MasterText" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/SoundSliders" unique_id=1907057953 instance=ExtResource("4_rbiwc")] +layout_mode = 2 +text = "MASTER_VOLUME" + +[node name="MasterSlider" type="HSlider" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/SoundSliders" unique_id=886808622] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme = ExtResource("2_7t8mv") +max_value = 1.0 +step = 0.01 +value = 1.0 + [node name="MusicText" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/SoundSliders" unique_id=282651139 instance=ExtResource("4_rbiwc")] layout_mode = 2 text = "MUSIC_VOLUME" @@ -281,12 +295,16 @@ text = "PSEUDO_GATHERED " horizontal_alignment = 1 vertical_alignment = 1 +[node name="MasterTestPlayer" type="AudioStreamPlayer" parent="." unique_id=1170520824] +unique_name_in_owner = true +stream = ExtResource("6_8f00b") + [node name="MusicTestPlayer" type="AudioStreamPlayer" parent="." unique_id=1716804039] unique_name_in_owner = true stream = ExtResource("6_8f00b") bus = &"Music" -[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="." unique_id=658541025] +[node name="AmbianceTestPlayer" type="AudioStreamPlayer" parent="." unique_id=658541025] unique_name_in_owner = true stream = ExtResource("6_8f00b") bus = &"Ambiance" @@ -297,9 +315,10 @@ stream = ExtResource("6_8f00b") bus = &"Sfx" [connection signal="item_selected" from="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/LanguageSettings/LanguageOptionButton" to="." method="_on_language_option_button_item_selected"] -[connection signal="value_changed" from="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/SoundSliders/MusicSlider" to="." method="_on_music_slider_value_changed"] -[connection signal="value_changed" from="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/SoundSliders/EnvSlider" to="." method="_on_env_slider_value_changed"] -[connection signal="value_changed" from="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/SoundSliders/SFXSlider" to="." method="_on_sfx_slider_value_changed"] +[connection signal="drag_ended" from="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/SoundSliders/MasterSlider" to="." method="_on_master_slider_drag_ended"] +[connection signal="drag_ended" from="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/SoundSliders/MusicSlider" to="." method="_on_music_slider_drag_endeded"] +[connection signal="drag_ended" from="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/SoundSliders/EnvSlider" to="." method="_on_env_slider_drag_endeded"] +[connection signal="drag_ended" from="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/SoundSliders/SFXSlider" to="." method="_on_sfx_slider_drag_endeded"] [connection signal="toggled" from="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/VideoSettings/FullScreenCheckBox" to="." method="_on_full_screen_check_box_toggled"] [connection signal="value_changed" from="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/VideoSettings/UiSizeSlider" to="." method="_on_ui_size_slider_value_changed"] [connection signal="value_changed" from="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/VideoSettings/FovSlider" to="." method="_on_fov_slider_value_changed"]