online multiplayer chess game (note server currently down)
Diffstat (limited to 'ui/menus/settings/Settings.gd')
-rw-r--r--ui/menus/settings/Settings.gd44
1 files changed, 29 insertions, 15 deletions
diff --git a/ui/menus/settings/Settings.gd b/ui/menus/settings/Settings.gd
index 3d569a0..f9737a6 100644
--- a/ui/menus/settings/Settings.gd
+++ b/ui/menus/settings/Settings.gd
@@ -1,16 +1,13 @@
extends Control
+class_name Settings
const file = "user://chess.settings"
-onready var piece_sets: PoolStringArray = Utils.walk_dir()
-onready var piece_set_button: GridMenuButton = find_node("PieceSet")
-onready var fullscreenbutton := find_node("FullscreenButton")
-onready var vsyncbutton := find_node("VsyncButton")
-onready var borderlessbutton := find_node("Borderless")
-onready var preview: Preview = find_node("Preview")
-onready var board_color1: ColorPickerButtonBetter = find_node("boardcolor1")
-onready var board_color2: ColorPickerButtonBetter = find_node("boardcolor2")
-onready var rainbow = find_node("rainbow")
+onready var piece_sets: PoolStringArray = Utils.walk_dir("res://assets/pieces")
+onready var piece_set_button: GridMenuButton = $"%PieceSet"
+onready var preview: Preview = $"%Preview"
+onready var board_color1: ColorPickerButtonBetter = $"%boardcolor1"
+onready var board_color2: ColorPickerButtonBetter = $"%boardcolor2"
onready var settings: Dictionary = default_settings_data setget set_settings
@@ -18,12 +15,21 @@ const default_settings_data := {
vsync = false,
fullscreen = false,
borderless = false,
+ premoves = false,
piece_set = "california",
board_color1 = Color(0.870588, 0.890196, 0.901961),
board_color2 = Color(0.54902, 0.635294, 0.678431),
rainbow = false
}
+onready var node_map := {
+ vsync = $"%VsyncButton",
+ fullscreen = $"%FullscreenButton",
+ borderless = $"%Borderless",
+ premoves = $"%premoves",
+ rainbow = $"%rainbow",
+}
+
var ignore_set_settings = false
@@ -36,13 +42,11 @@ func set_settings(new_settings: Dictionary) -> void:
func update_button_visuals(set: Dictionary = settings) -> void:
ignore_set_settings = true
- vsyncbutton.pressed = set.vsync
- fullscreenbutton.pressed = set.fullscreen
- if is_instance_valid(borderlessbutton):
- borderlessbutton.pressed = !set.borderless
+ for k in settings:
+ if k in node_map:
+ node_map[k].pressed = set[k]
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
@@ -51,15 +55,17 @@ 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()
+ node_map.borderless.queue_free()
for i in piece_sets: # add the items
piece_set_button.add_icon_item(load("res://assets/pieces/" + i + "/wP.png"), i, Vector2(75, 75))
piece_set_button.selected = Array(piece_sets).find(settings.piece_set)
update_vars()
update_button_visuals()
+ save()
func update_vars() -> void:
+ Globals.premoves = settings.premoves
Globals.piece_set = settings.piece_set
Globals.board_color1 = settings.board_color1
Globals.board_color2 = settings.board_color2
@@ -67,6 +73,9 @@ func update_vars() -> void:
OS.window_fullscreen = settings.fullscreen
OS.window_borderless = settings.borderless
ColorBack.rainbow = settings.rainbow
+
+
+func save() -> void:
SaveLoad.save(file, settings)
@@ -116,3 +125,8 @@ func _on_resetbutton_pressed() -> void:
func _on_rainbow_toggled(button_pressed: bool) -> void:
ColorBack.rainbow = button_pressed
self.settings.rainbow = button_pressed
+
+
+func set_premoves(button_pressed: bool) -> void:
+ self.settings.premoves = button_pressed
+ Globals.premoves = button_pressed