online multiplayer chess game (note server currently down)
Diffstat (limited to 'ui/MovesList.gd')
-rw-r--r--ui/MovesList.gd41
1 files changed, 36 insertions, 5 deletions
diff --git a/ui/MovesList.gd b/ui/MovesList.gd
index 9af2cd9..1cf697d 100644
--- a/ui/MovesList.gd
+++ b/ui/MovesList.gd
@@ -1,7 +1,12 @@
-extends ItemList
+extends ScrollContainer
+
var tween: Tween
-onready var scrollbar = get_v_scroll()
+var number = 1
+
+onready var scroll_container = self
+onready var scroll_bar = get_v_scrollbar()
+onready var sans = $sans
func _ready():
@@ -10,10 +15,36 @@ func _ready():
Utils.connect("newmove", self, "on_new_move")
+func create_number_label(num):
+ 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):
+ 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):
- add_item(move)
+ var alignment = Label.ALIGN_RIGHT
+ if Globals.turn: # white just moved
+ alignment = Label.ALIGN_LEFT
+ create_number_label(Globals.white_turns + 1)
+ number = 0
+ create_san_label(move, alignment)
tween.interpolate_property( # scrolldown
- scrollbar, "value", scrollbar.value, scrollbar.max_value, 0.5, Tween.TRANS_BOUNCE, Tween.EASE_IN_OUT
+ scroll_bar, "value", scroll_bar.value, scroll_bar.max_value, 0.5, Tween.TRANS_BOUNCE, Tween.EASE_IN_OUT
)
tween.start()
- scrollbar.value = scrollbar.max_value