Working on settings

This commit is contained in:
Rakarake 2024-11-17 22:18:07 +01:00
parent 655d6a0d30
commit 6ec6744477
2 changed files with 37 additions and 3 deletions

View file

@ -1,4 +1,5 @@
extends Node extends Node
## The singleton of all singletons
@onready var PauseMenu := $PauseMenu/Root @onready var PauseMenu := $PauseMenu/Root
@ -31,5 +32,32 @@ func player_init(player: Node):
player.queue_free() player.queue_free()
# Saving: settings and in-game-saves are handled differently
var settings := {
"vsync" : true,
}
## Saves settings
func apply_settings():
var json_string = JSON.stringify(settings)
var settings_file = FileAccess.open("user://settings.json", FileAccess.WRITE)
settings_file.store_string(json_string)
settings_file.close()
func load_settings():
var settings_file = FileAccess.open("user://settings.json", FileAccess.READ)
var json_string = settings_file.get_line()
var json = JSON.new()
var parse_result = json.parse(json_string)
if not parse_result == OK:
printerr("Failed to load settings")
return
settings = parse_result.data
func _on_exit_game_pressed(): func _on_exit_game_pressed():
get_tree().quit() get_tree().quit()
func _on_vsync_toggled(toggled_on: bool) -> void:
settings["vsync"] = toggled_on
DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_ENABLED if toggled_on else DisplayServer.VSYNC_DISABLED)
apply_settings()

View file

@ -50,7 +50,7 @@ grow_vertical = 2
theme_override_constants/separation = 10 theme_override_constants/separation = 10
alignment = 1 alignment = 1
[node name="Label" type="Label" parent="PauseMenu/Root/Panel/VBoxContainer"] [node name="Title" type="Label" parent="PauseMenu/Root/Panel/VBoxContainer"]
layout_mode = 2 layout_mode = 2
text = "Pause" text = "Pause"
@ -58,4 +58,10 @@ text = "Pause"
layout_mode = 2 layout_mode = 2
text = "Exit Game" text = "Exit Game"
[node name="Vsync" type="CheckButton" parent="PauseMenu/Root/Panel/VBoxContainer"]
layout_mode = 2
text = "Vsync"
[connection signal="pressed" from="PauseMenu/Root/Panel/VBoxContainer/ExitGame" to="." method="_on_exit_game_pressed"] [connection signal="pressed" from="PauseMenu/Root/Panel/VBoxContainer/ExitGame" to="." method="_on_exit_game_pressed"]
[connection signal="pressed" from="PauseMenu/Root/Panel/VBoxContainer/Vsync" to="." method="_on_vsync_pressed"]
[connection signal="toggled" from="PauseMenu/Root/Panel/VBoxContainer/Vsync" to="." method="_on_vsync_toggled"]