online multiplayer chess game (note server currently down)
Diffstat (limited to 'pieces/King.gd')
-rw-r--r--pieces/King.gd45
1 files changed, 39 insertions, 6 deletions
diff --git a/pieces/King.gd b/pieces/King.gd
index c039f5b..356c8b5 100644
--- a/pieces/King.gd
+++ b/pieces/King.gd
@@ -20,6 +20,33 @@ func get_moves():
return moves
+func moveto(position, real = true, take = false):
+ if real: # assign metadata for threefold repetition draw check
+ castleing()
+ if can_castle.size() > 0:
+ for i in can_castle:
+ if i[3] == "O-O-O":
+ if white:
+ Globals.grid.matrix[8].wccl = true
+ else:
+ Globals.grid.matrix[8].bccl = true
+ else:
+ if white:
+ Globals.grid.matrix[8].wccr = true
+ else:
+ Globals.grid.matrix[8].wccr = true
+ else:
+ if white:
+ Globals.grid.matrix[8].wccl = false
+ Globals.grid.matrix[8].wccr = false
+ else:
+ Globals.grid.matrix[8].bccl = false
+ Globals.grid.matrix[8].bccr = false
+ if Input.is_action_pressed("ui_down") and real:
+ breakpoint
+ .moveto(position, real, take)
+
+
func castleing():
var moves = []
var rooks = [pos_around(Vector2.RIGHT * 3), pos_around(Vector2.LEFT * 4)]
@@ -38,19 +65,25 @@ func castleing():
continue
if checkcheck(posx2) or checkcheck(pos):
continue
- can_castle.append([posx2, rook, rook_motion[i]])
+ can_castle.append([posx2, rook, rook_motion[i], "O-O-O" if i == 1 else "O-O"])
moves.append(posx2)
return moves
func castle(position):
+ var return_string = ""
+ if can_castle.size() == 1:
+ return_string = can_castle[0][3]
+ else:
+ for i in can_castle:
+ if i[0] == position:
+ return_string = i[3]
+ break
+ override_moveto = true
can_castle.clear()
moveto(position)
-
-
-func _ready():
- ._ready()
- shortname = "k" + team
+ override_moveto = false
+ return return_string
func can_move(): # checks if you can legally move