online multiplayer chess game (note server currently down)
Diffstat (limited to 'ui/sandisplay/SanDisplay.gd')
-rw-r--r--ui/sandisplay/SanDisplay.gd50
1 files changed, 50 insertions, 0 deletions
diff --git a/ui/sandisplay/SanDisplay.gd b/ui/sandisplay/SanDisplay.gd
new file mode 100644
index 0000000..d07be03
--- /dev/null
+++ b/ui/sandisplay/SanDisplay.gd
@@ -0,0 +1,50 @@
+extends ScrollContainer
+
+var tween: Tween
+
+var number = 1
+
+onready var scroll_container = self
+onready var scroll_bar = get_v_scrollbar()
+onready var sans = $sans
+
+
+func _ready() -> void:
+ tween = Tween.new()
+ add_child(tween)
+ Utils.connect("newmove", self, "on_new_move")
+
+
+func create_number_label(num) -> void:
+ var clr = ColorRect.new()
+ clr.color = Color(1, 1, 1, 0.13)
+ clr.rect_min_size = Vector2(70, 30)
+ var label = Label.new()
+ label.text = str(num) + ". "
+ label.align = Label.ALIGN_RIGHT
+ label.valign = Label.VALIGN_CENTER
+ label.rect_min_size = clr.rect_min_size
+ clr.add_child(label)
+ sans.add_child(clr)
+
+
+func create_san_label(text, alignment = Label.ALIGN_RIGHT) -> void:
+ var label = Label.new()
+ label.text = text
+ label.valign = Label.VALIGN_CENTER
+ label.align = alignment
+ label.rect_min_size = Vector2(115, 0)
+ sans.add_child(label)
+
+
+func on_new_move(move) -> void:
+ var alignment = Label.ALIGN_RIGHT
+ if !Globals.turn: # black just moved
+ alignment = Label.ALIGN_LEFT
+ create_number_label(Globals.fullmove)
+ number = 0
+ create_san_label(move, alignment)
+ tween.interpolate_property( # scrolldown
+ scroll_bar, "value", scroll_bar.value, scroll_bar.max_value, 0.5, Tween.TRANS_BOUNCE, Tween.EASE_IN_OUT
+ )
+ tween.start()