summaryrefslogtreecommitdiff
path: root/scripts/optionsmenu.gd
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/optionsmenu.gd')
-rw-r--r--scripts/optionsmenu.gd68
1 files changed, 35 insertions, 33 deletions
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