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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
# its really a PGNDisplay but im in no mood to change it
extends PanelContainer
export(PackedScene) var Base
onready var scroll_container := $Scroller
onready var scroll_bar: VScrollBar = scroll_container.get_v_scrollbar()
onready var sans := $Scroller/sanholder
var added_sans := 0
func _ready() -> void:
scroll_bar.hide()
scroll_bar.step = .15 #smoth
Globals.grid.connect("add_to_pgn", self, "add_to_pgn")
Globals.grid.connect("load_pgn", self, "add_moves")
Globals.grid.connect("clear_pgn", self, "clear")
Globals.grid.connect("remove_last", self, "pop")
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_to_pgn(m: String) -> void:
add_move(m)
scroll_down()
func add_move(move: String) -> void:
if added_sans % 2 == 0:
# warning-ignore-all:integer_division
create_number_label((added_sans / 2) + 1)
added_sans += 1
sans.get_children()[-1].add_move(move)
func add_moves(moves: PoolStringArray) -> void:
for move in moves:
add_move(move)
scroll_down()
func scroll_down():
yield(get_tree(), "idle_frame")
var tween = create_tween().set_trans(Tween.TRANS_LINEAR)
tween.tween_property(scroll_bar, "value", scroll_bar.max_value, 0.5)
func clear() -> void:
added_sans = 0
for i in sans.get_children():
i.free()
func pop() -> void:
added_sans -= 1
var cs = sans.get_children()
cs.invert()
for c in cs:
if !c.is_queued_for_deletion():
c.pop_move()
return
func _gui_input(_e: InputEvent) -> void:
if Input.is_action_just_pressed("click") and Globals.grid:
OS.clipboard = Globals.grid.chess.pgn()
|