Working on settings
This commit is contained in:
parent
655d6a0d30
commit
6ec6744477
|
@ -1,4 +1,5 @@
|
|||
extends Node
|
||||
## The singleton of all singletons
|
||||
|
||||
@onready var PauseMenu := $PauseMenu/Root
|
||||
|
||||
|
@ -31,5 +32,32 @@ func player_init(player: Node):
|
|||
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():
|
||||
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()
|
||||
|
|
|
@ -50,7 +50,7 @@ grow_vertical = 2
|
|||
theme_override_constants/separation = 10
|
||||
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
|
||||
text = "Pause"
|
||||
|
||||
|
@ -58,4 +58,10 @@ text = "Pause"
|
|||
layout_mode = 2
|
||||
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/Vsync" to="." method="_on_vsync_pressed"]
|
||||
[connection signal="toggled" from="PauseMenu/Root/Panel/VBoxContainer/Vsync" to="." method="_on_vsync_toggled"]
|
||||
|
|
Loading…
Reference in a new issue