working settings menu
includes audio sliders, fullscreen, disabling gravity change sound
This commit is contained in:
parent
eefda9e2bd
commit
a73b32610e
9 changed files with 197 additions and 4 deletions
9
default_bus_layout.tres
Normal file
9
default_bus_layout.tres
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
[gd_resource type="AudioBusLayout" format=3 uid="uid://bgs4iykhuoux0"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
bus/1/name = &"Sounds"
|
||||||
|
bus/1/solo = false
|
||||||
|
bus/1/mute = false
|
||||||
|
bus/1/bypass_fx = false
|
||||||
|
bus/1/volume_db = 0.00282288
|
||||||
|
bus/1/send = &"Master"
|
|
@ -58,8 +58,10 @@ func _input(ev: InputEvent) -> void:
|
||||||
|
|
||||||
if $AnimationPlayer.is_playing():
|
if $AnimationPlayer.is_playing():
|
||||||
$AnimationPlayer.stop()
|
$AnimationPlayer.stop()
|
||||||
$AudioStreamPlayer.play()
|
|
||||||
$AnimationPlayer.play(\"grow_fadeout\")
|
$AnimationPlayer.play(\"grow_fadeout\")
|
||||||
|
|
||||||
|
if Settings.sound_on_gravity_change:
|
||||||
|
$AudioStreamPlayer.play()
|
||||||
"
|
"
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_6rwl4"]
|
[sub_resource type="Animation" id="Animation_6rwl4"]
|
||||||
|
@ -161,3 +163,4 @@ libraries = {
|
||||||
stream = ExtResource("2_5uwlw")
|
stream = ExtResource("2_5uwlw")
|
||||||
volume_db = -6.0
|
volume_db = -6.0
|
||||||
mix_target = 2
|
mix_target = 2
|
||||||
|
bus = &"Sounds"
|
||||||
|
|
|
@ -31,5 +31,6 @@ shape = SubResource("CylinderShape3D_tgirv")
|
||||||
|
|
||||||
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
|
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
|
||||||
stream = SubResource("AudioStreamRandomizer_251sn")
|
stream = SubResource("AudioStreamRandomizer_251sn")
|
||||||
|
bus = &"Sounds"
|
||||||
|
|
||||||
[connection signal="body_entered" from="Area3D" to="." method="_on_area_3d_body_entered"]
|
[connection signal="body_entered" from="Area3D" to="." method="_on_area_3d_body_entered"]
|
||||||
|
|
|
@ -15,6 +15,7 @@ func _ready() -> void:
|
||||||
AudioServer.add_bus()
|
AudioServer.add_bus()
|
||||||
AudioServer.set_bus_name(AudioServer.bus_count - 1, self.name)
|
AudioServer.set_bus_name(AudioServer.bus_count - 1, self.name)
|
||||||
bus_index = AudioServer.get_bus_index(self.name)
|
bus_index = AudioServer.get_bus_index(self.name)
|
||||||
|
changeVolume(0)
|
||||||
|
|
||||||
var current_effects = AudioServer.get_bus_effect_count(bus_index)
|
var current_effects = AudioServer.get_bus_effect_count(bus_index)
|
||||||
for i in current_effects:
|
for i in current_effects:
|
||||||
|
@ -36,7 +37,8 @@ func _ready() -> void:
|
||||||
instrument.play()
|
instrument.play()
|
||||||
|
|
||||||
func changeVolume(db: float) -> void:
|
func changeVolume(db: float) -> void:
|
||||||
AudioServer.set_bus_volume_db(bus_index, db)
|
AudioServer.set_bus_volume_db(bus_index, db + Settings.volume_music)
|
||||||
|
AudioServer.set_bus_mute(bus_index, Settings.volume_music <= -15.0)
|
||||||
|
|
||||||
func adaptInstrumentsToVelocity(velocity: float, delta: float) -> void:
|
func adaptInstrumentsToVelocity(velocity: float, delta: float) -> void:
|
||||||
var instruments_needed = floor(velocity / 8)
|
var instruments_needed = floor(velocity / 8)
|
||||||
|
|
|
@ -7,6 +7,7 @@ script/source = "extends Node3D
|
||||||
|
|
||||||
var start_menu = preload(\"res://menus/main/start_menu.tscn\")
|
var start_menu = preload(\"res://menus/main/start_menu.tscn\")
|
||||||
var save_file_manager = preload(\"res://menus/main/save_file_manager.tscn\")
|
var save_file_manager = preload(\"res://menus/main/save_file_manager.tscn\")
|
||||||
|
var settings_menu = preload(\"res://menus/main/settings_menu.tscn\")
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
var sm = start_menu.instantiate()
|
var sm = start_menu.instantiate()
|
||||||
|
@ -20,6 +21,8 @@ func start() -> void:
|
||||||
rotate_cube(90)
|
rotate_cube(90)
|
||||||
|
|
||||||
func settings() -> void:
|
func settings() -> void:
|
||||||
|
var sm = settings_menu.instantiate()
|
||||||
|
$Menus/Panel2.change_menu(sm)
|
||||||
rotate_cube(90)
|
rotate_cube(90)
|
||||||
|
|
||||||
func rotate_cube(degrees: int) -> void:
|
func rotate_cube(degrees: int) -> void:
|
||||||
|
|
96
menus/main/settings_menu.tscn
Normal file
96
menus/main/settings_menu.tscn
Normal file
|
@ -0,0 +1,96 @@
|
||||||
|
[gd_scene load_steps=2 format=3 uid="uid://opwiiusu80nu"]
|
||||||
|
|
||||||
|
[sub_resource type="GDScript" id="GDScript_wbybg"]
|
||||||
|
script/source = "extends Control
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
$VBoxContainer/Fullscreen/CheckButton.button_pressed = Settings.fullscreen
|
||||||
|
$VBoxContainer/SoundGravity/CheckButton.button_pressed = Settings.sound_on_gravity_change
|
||||||
|
$VBoxContainer/VolumeMusic/HSlider.value = Settings.volume_music
|
||||||
|
$VBoxContainer/VolumeSounds/HSlider.value = Settings.volume_sounds
|
||||||
|
|
||||||
|
func _on_fullscreen_check_button_toggled(toggled_on: bool) -> void:
|
||||||
|
Settings.fullscreen = toggled_on
|
||||||
|
|
||||||
|
func _on_soundgravity_check_button_toggled(toggled_on: bool) -> void:
|
||||||
|
Settings.sound_on_gravity_change = toggled_on
|
||||||
|
|
||||||
|
func _on_volumemusic_h_slider_value_changed(value: float) -> void:
|
||||||
|
Settings.volume_music = int(value)
|
||||||
|
|
||||||
|
func _on_volumesounds_h_slider_value_changed(value: float) -> void:
|
||||||
|
Settings.volume_sounds = int(value)
|
||||||
|
"
|
||||||
|
|
||||||
|
[node name="SettingsMenu" type="Control"]
|
||||||
|
layout_mode = 3
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
script = SubResource("GDScript_wbybg")
|
||||||
|
|
||||||
|
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
alignment = 1
|
||||||
|
|
||||||
|
[node name="Fullscreen" type="HBoxContainer" parent="VBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
alignment = 1
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="VBoxContainer/Fullscreen"]
|
||||||
|
layout_mode = 2
|
||||||
|
text = "Fullscreen"
|
||||||
|
|
||||||
|
[node name="CheckButton" type="CheckButton" parent="VBoxContainer/Fullscreen"]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="SoundGravity" type="HBoxContainer" parent="VBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
alignment = 1
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="VBoxContainer/SoundGravity"]
|
||||||
|
layout_mode = 2
|
||||||
|
text = "Play sound on gravity change"
|
||||||
|
|
||||||
|
[node name="CheckButton" type="CheckButton" parent="VBoxContainer/SoundGravity"]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="VolumeMusic" type="HBoxContainer" parent="VBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
alignment = 1
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="VBoxContainer/VolumeMusic"]
|
||||||
|
layout_mode = 2
|
||||||
|
text = "Music volume"
|
||||||
|
|
||||||
|
[node name="HSlider" type="HSlider" parent="VBoxContainer/VolumeMusic"]
|
||||||
|
custom_minimum_size = Vector2(200, 28)
|
||||||
|
layout_mode = 2
|
||||||
|
min_value = -15.0
|
||||||
|
max_value = 15.0
|
||||||
|
|
||||||
|
[node name="VolumeSounds" type="HBoxContainer" parent="VBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
alignment = 1
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="VBoxContainer/VolumeSounds"]
|
||||||
|
layout_mode = 2
|
||||||
|
text = "Sound volume"
|
||||||
|
|
||||||
|
[node name="HSlider" type="HSlider" parent="VBoxContainer/VolumeSounds"]
|
||||||
|
custom_minimum_size = Vector2(200, 28)
|
||||||
|
layout_mode = 2
|
||||||
|
min_value = -15.0
|
||||||
|
max_value = 15.0
|
||||||
|
|
||||||
|
[connection signal="toggled" from="VBoxContainer/Fullscreen/CheckButton" to="." method="_on_fullscreen_check_button_toggled"]
|
||||||
|
[connection signal="toggled" from="VBoxContainer/SoundGravity/CheckButton" to="." method="_on_soundgravity_check_button_toggled"]
|
||||||
|
[connection signal="value_changed" from="VBoxContainer/VolumeMusic/HSlider" to="." method="_on_volumemusic_h_slider_value_changed"]
|
||||||
|
[connection signal="value_changed" from="VBoxContainer/VolumeSounds/HSlider" to="." method="_on_volumesounds_h_slider_value_changed"]
|
|
@ -20,9 +20,9 @@ boot_splash/show_image=false
|
||||||
config/icon="res://icon.png"
|
config/icon="res://icon.png"
|
||||||
config/windows_native_icon="res://icon.ico"
|
config/windows_native_icon="res://icon.ico"
|
||||||
|
|
||||||
[audio]
|
[autoload]
|
||||||
|
|
||||||
buses/default_bus_layout=""
|
Settings="*res://settings.gd"
|
||||||
|
|
||||||
[physics]
|
[physics]
|
||||||
|
|
||||||
|
|
78
settings.gd
Normal file
78
settings.gd
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
extends Node
|
||||||
|
|
||||||
|
const settings_file_name := "user://settings.save"
|
||||||
|
|
||||||
|
var fullscreen := false : set = _set_fullscreen, get = _get_fullscreen
|
||||||
|
func _get_fullscreen() -> bool:
|
||||||
|
return fullscreen
|
||||||
|
func _set_fullscreen(new_fullscreen: bool) -> void:
|
||||||
|
fullscreen = new_fullscreen
|
||||||
|
var new_state := DisplayServer.WindowMode.WINDOW_MODE_FULLSCREEN if new_fullscreen else DisplayServer.WindowMode.WINDOW_MODE_WINDOWED
|
||||||
|
DisplayServer.window_set_mode(new_state)
|
||||||
|
save_settings()
|
||||||
|
|
||||||
|
var sound_on_gravity_change := true : set = _set_sound_on_gravity_change, get = _get_sound_on_gravity_change
|
||||||
|
func _get_sound_on_gravity_change() -> bool:
|
||||||
|
return sound_on_gravity_change
|
||||||
|
func _set_sound_on_gravity_change(new_sound_on_gravity_change: bool) -> void:
|
||||||
|
sound_on_gravity_change = new_sound_on_gravity_change
|
||||||
|
save_settings()
|
||||||
|
|
||||||
|
var volume_music := 0.0 : set = _set_volume_music, get = _get_volume_music
|
||||||
|
func _get_volume_music() -> float:
|
||||||
|
return volume_music
|
||||||
|
func _set_volume_music(new_volume_music: float) -> void:
|
||||||
|
volume_music = new_volume_music
|
||||||
|
for i in AudioServer.bus_count:
|
||||||
|
var bus_name := AudioServer.get_bus_name(i)
|
||||||
|
if bus_name != "Master" and bus_name != "Sounds":
|
||||||
|
AudioServer.set_bus_volume_db(i, volume_music)
|
||||||
|
AudioServer.set_bus_mute(i, volume_music <= -15.0)
|
||||||
|
save_settings()
|
||||||
|
|
||||||
|
var volume_sounds := 0.0 : set = _set_volume_sounds, get = _get_volume_sounds
|
||||||
|
func _get_volume_sounds() -> float:
|
||||||
|
return volume_sounds
|
||||||
|
func _set_volume_sounds(new_volume_sounds: float) -> void:
|
||||||
|
var bus_index := AudioServer.get_bus_index("Sounds")
|
||||||
|
if bus_index == -1:
|
||||||
|
print("The Sounds audio bus is missing, can't set new volume!")
|
||||||
|
return
|
||||||
|
|
||||||
|
volume_sounds = new_volume_sounds
|
||||||
|
AudioServer.set_bus_mute(bus_index, volume_sounds <= -15.0)
|
||||||
|
AudioServer.set_bus_volume_db(bus_index, volume_sounds)
|
||||||
|
save_settings()
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
if not FileAccess.file_exists(settings_file_name):
|
||||||
|
print("The settings file has not been found, not reading from it")
|
||||||
|
return
|
||||||
|
|
||||||
|
var settings_file := FileAccess.open(settings_file_name, FileAccess.READ)
|
||||||
|
var json := JSON.new()
|
||||||
|
var json_string := settings_file.get_line()
|
||||||
|
|
||||||
|
if json.parse(json_string) != OK:
|
||||||
|
print("(SETTINGS) JSON Parse Error: ", json.get_error_message(), " in ", json_string, " at line ", json.get_error_line())
|
||||||
|
return
|
||||||
|
|
||||||
|
if json.data.has("fullscreen") and typeof(json.data["fullscreen"]) == TYPE_BOOL:
|
||||||
|
fullscreen = json.data["fullscreen"]
|
||||||
|
if json.data.has("sound_on_gravity_change") and typeof(json.data["sound_on_gravity_change"]) == TYPE_BOOL:
|
||||||
|
sound_on_gravity_change = json.data["sound_on_gravity_change"]
|
||||||
|
if json.data.has("volume_music") and typeof(json.data["volume_music"]) == TYPE_FLOAT:
|
||||||
|
volume_music = json.data["volume_music"]
|
||||||
|
if json.data.has("volume_sounds") and typeof(json.data["volume_sounds"]) == TYPE_FLOAT:
|
||||||
|
volume_sounds = json.data["volume_sounds"]
|
||||||
|
|
||||||
|
func save_settings() -> void:
|
||||||
|
var settings_file := FileAccess.open(settings_file_name, FileAccess.WRITE)
|
||||||
|
var json_string := JSON.stringify({
|
||||||
|
"fullscreen": fullscreen,
|
||||||
|
"sound_on_gravity_change": sound_on_gravity_change,
|
||||||
|
"volume_music": volume_music,
|
||||||
|
"volume_sounds": volume_sounds,
|
||||||
|
})
|
||||||
|
settings_file.store_line(json_string)
|
||||||
|
settings_file.store_line("FOR YOUR SAFETY, ALWAYS CHECK IF THE DATA OF THE FILES YOU DOWNLOAD LOOKS OKAY")
|
1
settings.gd.uid
Normal file
1
settings.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://6or7tnhtbqe6
|
Loading…
Add table
Add a link
Reference in a new issue