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