summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLogan <logan@cflip.net>2023-02-02 18:46:04 -0700
committerLogan <logan@cflip.net>2023-02-02 18:46:04 -0700
commit5e6d1b25330c8246dba43dbc232e8787b40a0ab4 (patch)
treefee475f16fc23e4b8b20df58f7554395afce0cc8
parent818f5ef03baa353b96aadd5b100c1f6ca6b7fedb (diff)
Refactored optionsmenu script and scene
-rw-r--r--scenes/optionsmenu.tscn6
-rw-r--r--scripts/optionsmenu.gd68
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