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
extends MarginContainer
class_name UserPanel

onready var flag_display = $"%Flag"
onready var name_display = $"%Name"
onready var nps_display = $"%Nps"
onready var thinking_display = $"%ThinkingProgress"
onready var loading_display = $"%LoadingAnimation"

var flag := "rainbow" setget set_flag
var _name := "name" setget set_name
var nps := 0 setget set_nps
var thinking := 0 setget set_thinking
var loading := false setget set_loading, get_loading  # reference to loading_display.visible


func set_flag(newflag: String) -> void:
	flag = newflag
	flag_display.texture = load("res://assets/flags/%s.png" % flag)


func set_name(newname: String) -> void:
	_name = newname
	name_display.text = _name


func set_nps(new_nps: int) -> void:
	if nps == new_nps:
		return
	if new_nps == 0:
		nps_display.hide()
	else:
		nps_display.show()
		if OS.has_feature("JavaScript"):
			var localized = JavaScript.eval("(%d).toLocaleString(document.documentElement.lang || 'en')" % new_nps)
			nps_display.text = "%sn/s" % (localized if localized else format_n(new_nps))  # fallback
		else:
			nps_display.text = "%sn/s" % format_n(new_nps)
	nps = new_nps


func format_n(n: int) -> String:
	var strn := str(n)
	if n == 0:
		return strn
	var lenn := len(strn)
	var i := 1
	while (3 * i) < lenn:
		i += 1
		strn = strn.insert(i, ",")
	return strn


func set_thinking(new_thinking: int) -> void:
	if new_thinking == thinking:
		return
	if new_thinking == 0:
		thinking_display.hide()
		thinking_display.value = 0
	else:
		thinking_display.show()
		create_tween().tween_property(thinking_display, "value", float(new_thinking), .25)

	thinking = new_thinking


func set_loading(new_loading: bool) -> void:
	loading_display.visible = new_loading


func get_loading() -> bool:
	return loading_display.visible