online multiplayer chess game (note server currently down)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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")
	Utils.connect("pop_move", self, "reset_moves")


func create_number_label(num: int) -> void:
	var base = Base.instance()
	sans.add_child(base)
	yield(get_tree(), "idle_frame")
	base.number.text = "%s." % num
	base.name = base.number.text


func add_move_to_label(move: String) -> void:
	if !Globals.turn:
		create_number_label(Globals.fullmove)
	sans.get_children()[-1].add_move(move)


func on_new_move(move: String) -> void:
	add_move_to_label(move)
	tween.interpolate_property(scroll_bar, "value", scroll_bar.value, scroll_bar.max_value, 0.5, 9)  # bouncy
	tween.start()


func reset_moves():
	for i in sans.get_children():
		i.queue_free()


func _gui_input(event):
	if event is InputEventMouseButton:
		OS.clipboard = Utils.get_pgn()