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
extends Node2D
class_name Piece, "res://assets/california/wP.png"

var real_position = Vector2.ZERO
var white := true
var realname = "pawn"
var has_moved = false
var sprite

onready var colorrect = $ColorRect


func _ready():
	colorrect.color = Globals.grid.overlay_color
	colorrect.rect_size = Globals.grid.piece_size


func move(newpos: Vector2):
	has_moved = true
	global_position = newpos * Globals.grid.piece_size


func clicked():
	colorrect.show()
	create_circles()
	print(realname, " was clicked")


func clear_clicked():
	colorrect.hide()
	Globals.grid.clear_circles()


func moveto(position):  # called when already clicked, and clicked again
	Globals.grid.matrix[real_position.y][real_position.x] = null
	Globals.grid.matrix[position.y][position.x] = self
	real_position = position
	move(position)


func create_circles():
	# for motion
	match realname:
		"pawn":
			var carray = [real_position - Vector2(0, 1)]
			if !has_moved:
				carray.append(real_position - Vector2(0, 2))
			set_circle(carray)


func set_circle(positions: Array):
	for i in range(len(positions)):
		var pos = positions[i]
		if Globals.grid.matrix[pos.y][pos.x]:
			continue
		Globals.grid.background_matrix[pos.x][pos.y].set_circle(true)