online multiplayer chess game (note server currently down)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
extends Control
class_name Settings

const file = "user://chess.settings"

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

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


func set_settings(new_settings: Dictionary) -> void:
	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
	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
	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"):
		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
	OS.vsync_enabled = settings.vsync
	OS.window_fullscreen = settings.fullscreen
	OS.window_borderless = settings.borderless
	ColorBack.rainbow = settings.rainbow


func save() -> void:
	SaveLoad.save(file, settings)


func _on_PieceSet_selected(index: int) -> void:
	Globals.piece_set = piece_sets[index]
	self.settings.piece_set = piece_sets[index]


func _on_VsyncButton_toggled(button_pressed: bool) -> void:
	OS.vsync_enabled = button_pressed
	self.settings.vsync = button_pressed


func _on_FullscreenButton_toggled(button_pressed: bool) -> void:
	OS.window_fullscreen = button_pressed
	self.settings.fullscreen = button_pressed


func _on_Borderless_toggled(button_pressed: bool) -> void:
	self.settings.borderless = !button_pressed
	OS.window_borderless = !button_pressed


func _on_boardcolor1_newcolor(color: Color) -> void:
	Globals.board_color1 = color
	self.settings.board_color1 = color


func _on_boardcolor1_changed(color: Color):
	preview.update_preview(color, settings.board_color2, settings.piece_set)


func _on_boardcolor2_newcolor(color: Color) -> void:
	Globals.board_color2 = color
	self.settings.board_color2 = color


func _on_boardcolor2_changed(color: Color):
	preview.update_preview(settings.board_color1, color, settings.piece_set)


func _on_resetbutton_pressed() -> void:
	self.settings = default_settings_data.duplicate()
	update_vars()


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