From 7bae715ba5ce6723af35030259aafe5bc6126da3 Mon Sep 17 00:00:00 2001 From: hpham474 Date: Sun, 7 Nov 2021 22:43:00 -0600 Subject: [PATCH] Added master slider to change all volume --- godot_ship/scenes/Options.tscn | 60 ++++++++++++++----- godot_ship/script/options/Options.gd | 20 +++++-- .../script/options/OptionsController.gd | 10 ++++ 3 files changed, 69 insertions(+), 21 deletions(-) diff --git a/godot_ship/scenes/Options.tscn b/godot_ship/scenes/Options.tscn index c8ddd62..7d58506 100644 --- a/godot_ship/scenes/Options.tscn +++ b/godot_ship/scenes/Options.tscn @@ -42,22 +42,23 @@ __meta__ = { "_edit_use_anchors_": false } -[node name="SFX Setting" type="Node2D" parent="Sliders"] +[node name="Master Volume Setting" type="Node2D" parent="Sliders"] position = Vector2( 0, 8 ) -[node name="SFX Label" type="Label" parent="Sliders/SFX Setting"] +[node name="Master Label" type="Label" parent="Sliders/Master Volume Setting"] +margin_left = -0.140289 margin_top = -8.0 -margin_right = 64.0 +margin_right = 63.8597 margin_bottom = 8.0 custom_colors/font_color = Color( 0, 0, 0, 1 ) -text = "SFX:" +text = "Volume:" align = 2 valign = 1 __meta__ = { "_edit_use_anchors_": false } -[node name="SFX Slider" type="HSlider" parent="Sliders/SFX Setting"] +[node name="Master Slider" type="HSlider" parent="Sliders/Master Volume Setting"] margin_left = 64.0 margin_top = -8.0 margin_right = 208.0 @@ -69,27 +70,28 @@ focus_next = NodePath("../../Volume Setting/Volume Slider") focus_previous = NodePath("../../../Back") min_value = -25.0 max_value = 0.0 -tick_count = 11 +tick_count = 10 +ticks_on_borders = true __meta__ = { "_edit_use_anchors_": false } -[node name="Volume Setting" type="Node2D" parent="Sliders"] +[node name="Music Volume Setting" type="Node2D" parent="Sliders"] position = Vector2( 0, 33 ) -[node name="Volume Label" type="Label" parent="Sliders/Volume Setting"] +[node name="Music Label" type="Label" parent="Sliders/Music Volume Setting"] margin_top = -8.0 margin_right = 64.0 margin_bottom = 8.0 custom_colors/font_color = Color( 0, 0, 0, 1 ) -text = "Volume:" +text = "Music:" align = 2 valign = 1 __meta__ = { "_edit_use_anchors_": false } -[node name="Volume Slider" type="HSlider" parent="Sliders/Volume Setting"] +[node name="Music Slider" type="HSlider" parent="Sliders/Music Volume Setting"] margin_left = 64.0 margin_top = -8.0 margin_right = 208.0 @@ -100,7 +102,34 @@ focus_next = NodePath("../../../Buttons/Dark") focus_previous = NodePath("../../SFX Setting/SFX Slider") min_value = -50.0 max_value = 0.0 -tick_count = 11 +tick_count = 10 +ticks_on_borders = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="SFX Volume Setting" type="Node2D" parent="Sliders"] + +[node name="SFX Label" type="Label" parent="Sliders/SFX Volume Setting"] +margin_top = 48.0 +margin_right = 64.0 +margin_bottom = 64.0 +custom_colors/font_color = Color( 0, 0, 0, 1 ) +text = "SFX:" +align = 2 +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="SFX Slider" type="HSlider" parent="Sliders/SFX Volume Setting"] +margin_left = 64.0 +margin_top = 48.0 +margin_right = 208.0 +margin_bottom = 64.0 +min_value = -50.0 +max_value = 0.0 +tick_count = 10 ticks_on_borders = true __meta__ = { "_edit_use_anchors_": false @@ -108,9 +137,9 @@ __meta__ = { [node name="Buttons" type="HBoxContainer" parent="."] margin_left = 216.0 -margin_top = 190.0 +margin_top = 200.0 margin_right = 424.0 -margin_bottom = 214.0 +margin_bottom = 224.0 __meta__ = { "_edit_lock_": true, "_edit_use_anchors_": false @@ -155,8 +184,9 @@ __meta__ = { "_edit_use_anchors_": false } -[connection signal="value_changed" from="Sliders/SFX Setting/SFX Slider" to="." method="_on_SFX_Slider_value_changed"] -[connection signal="value_changed" from="Sliders/Volume Setting/Volume Slider" to="." method="_on_Volume_Slider_value_changed"] +[connection signal="value_changed" from="Sliders/Master Volume Setting/Master Slider" to="." method="_on_Master_Slider_value_changed"] +[connection signal="value_changed" from="Sliders/Music Volume Setting/Music Slider" to="." method="_on_Music_Slider_value_changed"] +[connection signal="value_changed" from="Sliders/SFX Volume Setting/SFX Slider" to="." method="_on_SFX_Slider_value_changed"] [connection signal="pressed" from="Buttons/Light" to="." method="_on_Light_pressed"] [connection signal="pressed" from="Buttons/Dark" to="." method="_on_Dark_pressed"] [connection signal="pressed" from="Back" to="." method="_on_Button_pressed"] diff --git a/godot_ship/script/options/Options.gd b/godot_ship/script/options/Options.gd index f61cddb..65171c0 100644 --- a/godot_ship/script/options/Options.gd +++ b/godot_ship/script/options/Options.gd @@ -1,7 +1,8 @@ extends Control +onready var master_slider = find_node("Master Slider", true, true) +onready var music_slider = find_node("Music Slider", true, true) onready var sound_slider = find_node("SFX Slider", true, true) -onready var music_slider = find_node("Volume Slider", true, true) onready var theme_buttons = find_node("Buttons", true, true).get_children() @@ -9,23 +10,30 @@ onready var theme_buttons = find_node("Buttons", true, true).get_children() func _ready(): OptionsController.load_options() find_next_valid_focus().grab_focus() - sound_slider.value = OptionsController.get_sfx_volume() + master_slider.value = OptionsController.get_mas_volume() music_slider.value = OptionsController.get_mus_volume() + sound_slider.value = OptionsController.get_sfx_volume() func _on_Button_pressed(): AudioBus.emit_signal("button_clicked") queue_free() #MessageBus.emit_signal("change_scene", "Title") +func _on_Master_Slider_value_changed(value): + AudioBus.emit_signal("button_clicked") + OptionsController.set_mas_vol(value) + OptionsController.save_options() + +func _on_Music_Slider_value_changed(value): + AudioBus.emit_signal("button_clicked") + OptionsController.set_mus_vol(value) + OptionsController.save_options() + func _on_SFX_Slider_value_changed(value): AudioBus.emit_signal("button_clicked") OptionsController.set_sfx_vol(value) OptionsController.save_options() -func _on_Volume_Slider_value_changed(value): - OptionsController.set_mus_vol(value) - OptionsController.save_options() - func _on_Light_pressed(): AudioBus.emit_signal("button_clicked") OptionsController.set_theme("light") diff --git a/godot_ship/script/options/OptionsController.gd b/godot_ship/script/options/OptionsController.gd index 2c478db..70082af 100644 --- a/godot_ship/script/options/OptionsController.gd +++ b/godot_ship/script/options/OptionsController.gd @@ -8,6 +8,7 @@ signal change_theme (theme) var f = File.new() var options_file = "user://options.save" var theme = "dark" +var mas_vol = 0 var mus_vol = 0 var sfx_vol = 0 @@ -19,7 +20,11 @@ func set_theme(theme_name): match theme_name: "dark","light": theme = String(theme_name) + save_options() emit_signal("change_theme", theme) +func set_mas_vol(volume): + mas_vol = volume + AudioServer.set_bus_volume_db(AudioServer.get_bus_index("Master"), mas_vol) func set_mus_vol(volume): mus_vol = volume AudioServer.set_bus_volume_db(AudioServer.get_bus_index("BGM"), mus_vol) @@ -31,6 +36,7 @@ func set_sfx_vol(volume): func save_options(): f.open(options_file, File.WRITE) f.store_var(theme) + f.store_var(mas_vol) f.store_var(mus_vol) f.store_var(sfx_vol) f.close() @@ -38,15 +44,19 @@ func load_options(): if f.file_exists(options_file): f.open(options_file, File.READ) theme = f.get_var() + mas_vol = f.get_var() mus_vol = f.get_var() sfx_vol = f.get_var() f.close() + AudioServer.set_bus_volume_db(AudioServer.get_bus_index("Master"), mus_vol) AudioServer.set_bus_volume_db(AudioServer.get_bus_index("BGM"), mus_vol) AudioServer.set_bus_volume_db(AudioServer.get_bus_index("SFX"), sfx_vol) # Getters func get_theme(): return theme +func get_mas_volume(): + return mas_vol func get_mus_volume(): return mus_vol func get_sfx_volume():