feat: added audio settings
This commit is contained in:
+95
-4
@@ -31,6 +31,14 @@ var _resolution_opt: OptionButton
|
||||
var _fps_slider: HSlider
|
||||
var _fps_input: LineEdit
|
||||
var _show_fps_checkbox: CheckButton
|
||||
var _vol_master_slider: HSlider
|
||||
var _vol_master_input: LineEdit
|
||||
var _vol_sfx_slider: HSlider
|
||||
var _vol_sfx_input: LineEdit
|
||||
var _vol_music_slider: HSlider
|
||||
var _vol_music_input: LineEdit
|
||||
var _vol_wind_slider: HSlider
|
||||
var _vol_wind_input: LineEdit
|
||||
var keybind_vbox: VBoxContainer
|
||||
var rebind_overlay: ColorRect
|
||||
var rebind_label: Label
|
||||
@@ -325,16 +333,51 @@ func _build_ui() -> void:
|
||||
# Audio Tab
|
||||
var audio_tab = VBoxContainer.new()
|
||||
audio_tab.name = "Audio"
|
||||
audio_tab.add_theme_constant_override("separation", 10)
|
||||
tab_container.add_child(audio_tab)
|
||||
var aud_label = Label.new()
|
||||
aud_label.text = "Settings coming soon..."
|
||||
audio_tab.add_child(aud_label)
|
||||
|
||||
# Master
|
||||
var master_arr = _build_vol_control(audio_tab, "Master Volume")
|
||||
_vol_master_slider = master_arr[0]
|
||||
_vol_master_input = master_arr[1]
|
||||
_vol_master_slider.value_changed.connect(func(v): _on_vol_changed("vol_master", v, _vol_master_input))
|
||||
_vol_master_input.text_submitted.connect(func(t): _on_vol_text_changed("vol_master", t, _vol_master_slider, _vol_master_input))
|
||||
|
||||
# SFX
|
||||
var sfx_arr = _build_vol_control(audio_tab, "Sound Effects")
|
||||
_vol_sfx_slider = sfx_arr[0]
|
||||
_vol_sfx_input = sfx_arr[1]
|
||||
_vol_sfx_slider.value_changed.connect(func(v): _on_vol_changed("vol_sfx", v, _vol_sfx_input))
|
||||
_vol_sfx_input.text_submitted.connect(func(t): _on_vol_text_changed("vol_sfx", t, _vol_sfx_slider, _vol_sfx_input))
|
||||
|
||||
# Music
|
||||
var music_arr = _build_vol_control(audio_tab, "Music")
|
||||
_vol_music_slider = music_arr[0]
|
||||
_vol_music_input = music_arr[1]
|
||||
_vol_music_slider.value_changed.connect(func(v): _on_vol_changed("vol_music", v, _vol_music_input))
|
||||
_vol_music_input.text_submitted.connect(func(t): _on_vol_text_changed("vol_music", t, _vol_music_slider, _vol_music_input))
|
||||
|
||||
# Wind
|
||||
var wind_arr = _build_vol_control(audio_tab, "Wind")
|
||||
_vol_wind_slider = wind_arr[0]
|
||||
_vol_wind_input = wind_arr[1]
|
||||
_vol_wind_slider.value_changed.connect(func(v): _on_vol_changed("vol_wind", v, _vol_wind_input))
|
||||
_vol_wind_input.text_submitted.connect(func(t): _on_vol_text_changed("vol_wind", t, _vol_wind_slider, _vol_wind_input))
|
||||
|
||||
var spacer_aud = Control.new()
|
||||
spacer_aud.size_flags_vertical = Control.SIZE_EXPAND_FILL
|
||||
audio_tab.add_child(spacer_aud)
|
||||
var reset_aud_btn = Button.new()
|
||||
reset_aud_btn.text = "Reset to Defaults"
|
||||
reset_aud_btn.pressed.connect(func(): pass)
|
||||
reset_aud_btn.pressed.connect(func():
|
||||
SettingsManager.vol_master = 100.0
|
||||
SettingsManager.vol_sfx = 100.0
|
||||
SettingsManager.vol_music = 100.0
|
||||
SettingsManager.vol_wind = 100.0
|
||||
SettingsManager._save_settings()
|
||||
SettingsManager.apply_audio_settings()
|
||||
_populate_audio_ui()
|
||||
)
|
||||
audio_tab.add_child(reset_aud_btn)
|
||||
|
||||
# Mouse Tab
|
||||
@@ -481,6 +524,43 @@ func _build_ui() -> void:
|
||||
quit_dialog.dialog_text = "Are you sure you want to close the game?"
|
||||
add_child(quit_dialog)
|
||||
|
||||
func _build_vol_control(parent: Node, label_name: String) -> Array:
|
||||
var hbox = HBoxContainer.new()
|
||||
parent.add_child(hbox)
|
||||
|
||||
var lbl = Label.new()
|
||||
lbl.text = label_name
|
||||
lbl.custom_minimum_size = Vector2(150, 0)
|
||||
hbox.add_child(lbl)
|
||||
|
||||
var slider = HSlider.new()
|
||||
slider.min_value = 0.0
|
||||
slider.max_value = 100.0
|
||||
slider.step = 1.0
|
||||
slider.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
||||
slider.custom_minimum_size = Vector2(150, 0)
|
||||
hbox.add_child(slider)
|
||||
|
||||
var input = LineEdit.new()
|
||||
input.custom_minimum_size = Vector2(60, 0)
|
||||
hbox.add_child(input)
|
||||
|
||||
return [slider, input]
|
||||
|
||||
func _on_vol_changed(setting_name: String, value: float, input_node: LineEdit) -> void:
|
||||
SettingsManager.set(setting_name, value)
|
||||
input_node.text = str(value)
|
||||
SettingsManager._save_settings()
|
||||
SettingsManager.apply_audio_settings()
|
||||
|
||||
func _on_vol_text_changed(setting_name: String, text: String, slider_node: HSlider, input_node: LineEdit) -> void:
|
||||
var val = clampf(text.to_float(), 0.0, 100.0)
|
||||
SettingsManager.set(setting_name, val)
|
||||
slider_node.value = val
|
||||
input_node.text = str(val)
|
||||
SettingsManager._save_settings()
|
||||
SettingsManager.apply_audio_settings()
|
||||
|
||||
func _create_label(text: String) -> Label:
|
||||
var l = Label.new()
|
||||
l.text = text
|
||||
@@ -525,12 +605,23 @@ func _populate_video_ui() -> void:
|
||||
_fps_slider.value = float(SettingsManager.fps_cap)
|
||||
_fps_input.text = str(SettingsManager.fps_cap)
|
||||
|
||||
func _populate_audio_ui() -> void:
|
||||
if _vol_master_slider: _vol_master_slider.value = SettingsManager.vol_master
|
||||
if _vol_master_input: _vol_master_input.text = str(SettingsManager.vol_master)
|
||||
if _vol_sfx_slider: _vol_sfx_slider.value = SettingsManager.vol_sfx
|
||||
if _vol_sfx_input: _vol_sfx_input.text = str(SettingsManager.vol_sfx)
|
||||
if _vol_music_slider: _vol_music_slider.value = SettingsManager.vol_music
|
||||
if _vol_music_input: _vol_music_input.text = str(SettingsManager.vol_music)
|
||||
if _vol_wind_slider: _vol_wind_slider.value = SettingsManager.vol_wind
|
||||
if _vol_wind_input: _vol_wind_input.text = str(SettingsManager.vol_wind)
|
||||
|
||||
func _show_settings() -> void:
|
||||
main_vbox.visible = false
|
||||
loadout_editor.visible = false
|
||||
settings_editor.visible = true
|
||||
_populate_keybindings()
|
||||
_populate_video_ui()
|
||||
_populate_audio_ui()
|
||||
if _debug_ui_checkbox:
|
||||
_debug_ui_checkbox.button_pressed = SettingsManager.show_debug_ui
|
||||
if _show_fps_checkbox:
|
||||
|
||||
Reference in New Issue
Block a user