1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
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
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):
if event.is_action_pressed("escape"):
queue_free()
func _on_ReturnButton_pressed():
queue_free()
func _on_VolumeMasterSlider_value_changed(value):
update_audio(value, 0, MasterSlider, "volume_master_enabled", "volume_master", MasterValue)
func _on_VolumeMusicSlider_value_changed(value):
update_audio(value, 1, MusicSlider, "volume_music_enabled", "volume_music", MusicValue)
func _on_VolumeSFXSlider_value_changed(value):
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
|