online multiplayer chess game (note server currently down)
Diffstat (limited to 'ui/menus/settings/Settings.gd')
-rw-r--r--ui/menus/settings/Settings.gd43
1 files changed, 27 insertions, 16 deletions
diff --git a/ui/menus/settings/Settings.gd b/ui/menus/settings/Settings.gd
index ef58eb2..7c23b8a 100644
--- a/ui/menus/settings/Settings.gd
+++ b/ui/menus/settings/Settings.gd
@@ -1,5 +1,7 @@
extends Control
+const file = "user://chess.settings"
+
onready var piece_sets := Utils.walk_dir()
onready var piece_set_button: GridMenuButton = find_node("PieceSet")
onready var fullscreenbutton := find_node("FullscreenButton")
@@ -10,34 +12,44 @@ onready var board_color1: ColorPickerButtonBetter = find_node("boardcolor1")
onready var board_color2: ColorPickerButtonBetter = find_node("boardcolor2")
onready var rainbow = find_node("rainbow")
-onready var settings: Dictionary = SaveLoad.get_data("settings") setget set_settings
+onready var settings: Dictionary = default_settings_data setget set_settings
+
+const default_settings_data = {
+ vsync = OS.vsync_enabled,
+ fullscreen = OS.window_fullscreen,
+ borderless = OS.window_borderless,
+ piece_set = "california",
+ board_color1 = Color(0.870588, 0.890196, 0.901961),
+ board_color2 = Color(0.54902, 0.635294, 0.678431),
+ rainbow = false
+}
var ignore_set_settings = false
func set_settings(new_settings: Dictionary) -> void:
- if ignore_set_settings:
- return
- update_button_visuals(new_settings)
- settings = new_settings
- SaveLoad.files["settings"]["data"] = settings
- SaveLoad.save("settings")
+ if not ignore_set_settings:
+ update_button_visuals(new_settings)
+ settings = new_settings
+ SaveLoad.save(file, settings)
func update_button_visuals(set: Dictionary = settings) -> void:
ignore_set_settings = true
- vsyncbutton.pressed = set["vsync"]
- fullscreenbutton.pressed = set["fullscreen"]
+ vsyncbutton.pressed = set.vsync
+ fullscreenbutton.pressed = set.fullscreen
if is_instance_valid(borderlessbutton):
- borderlessbutton.pressed = !set["borderless"]
- board_color1.color = set["board_color1"]
- board_color2.color = set["board_color2"]
- rainbow.pressed = set["rainbow"]
- preview.update_preview(set["board_color1"], set["board_color2"], set["piece_set"])
+ borderlessbutton.pressed = !set.borderless
+ board_color1.color = set.board_color1
+ board_color2.color = set.board_color2
+ rainbow.pressed = set.rainbow
+ preview.update_preview(set.board_color1, set.board_color2, set.piece_set)
ignore_set_settings = false
func _ready() -> void:
+ var lod = SaveLoad.load(file)
+ settings = lod if Utils.dict_cmp(lod, default_settings_data) else default_settings_data
if OS.has_feature("HTML5"):
borderlessbutton.queue_free()
for i in piece_sets: # add the items
@@ -55,8 +67,7 @@ func update_vars() -> void:
OS.window_fullscreen = settings.fullscreen
OS.window_borderless = settings.borderless
ColorBack.rainbow = settings.rainbow
- SaveLoad.files["settings"]["data"] = settings
- SaveLoad.save("settings")
+ SaveLoad.save(file, settings)
func _on_PieceSet_selected(index: int) -> void: