online multiplayer chess game (note server currently down)
Diffstat (limited to 'ui/menus/sidebarright/sandisplay/SanDisplay.gd')
-rw-r--r--ui/menus/sidebarright/sandisplay/SanDisplay.gd36
1 files changed, 36 insertions, 0 deletions
diff --git a/ui/menus/sidebarright/sandisplay/SanDisplay.gd b/ui/menus/sidebarright/sandisplay/SanDisplay.gd
new file mode 100644
index 0000000..58ddbad
--- /dev/null
+++ b/ui/menus/sidebarright/sandisplay/SanDisplay.gd
@@ -0,0 +1,36 @@
+extends ScrollContainer
+
+var tween := Tween.new()
+
+export(PackedScene) var Base
+
+onready var scroll_container := self
+onready var scroll_bar := get_v_scrollbar()
+onready var sans := $V
+
+
+func _ready() -> void:
+ scroll_bar.step = .15
+ add_child(tween)
+ Utils.connect("newmove", self, "on_new_move")
+
+
+func create_number_label(num: int) -> void:
+ var base = Base.instance()
+ sans.add_child(base)
+ yield(get_tree(), "idle_frame")
+ base.number.text = "%s." % str(num)
+
+
+func add_move_to_label(move: String) -> void:
+ sans.get_children()[-1].add_move(move)
+
+
+func on_new_move(move: String) -> void:
+ if !Globals.turn: # black just moved
+ yield(create_number_label(Globals.fullmove), "completed")
+ add_move_to_label(move)
+ tween.interpolate_property( # scrolldown
+ scroll_bar, "value", scroll_bar.value, scroll_bar.max_value, 0.5, Tween.TRANS_BOUNCE
+ )
+ tween.start()