online multiplayer chess game (note server currently down)
Diffstat (limited to 'ui/menus/sidebarright/UserPanel.gd')
-rw-r--r--ui/menus/sidebarright/UserPanel.gd72
1 files changed, 72 insertions, 0 deletions
diff --git a/ui/menus/sidebarright/UserPanel.gd b/ui/menus/sidebarright/UserPanel.gd
new file mode 100644
index 0000000..2e883c1
--- /dev/null
+++ b/ui/menus/sidebarright/UserPanel.gd
@@ -0,0 +1,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