online multiplayer chess game (note server currently down)
Diffstat (limited to 'ui/menus/settings/Settings.gd')
| -rw-r--r-- | ui/menus/settings/Settings.gd | 44 |
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 |