online multiplayer chess game (note server currently down)
Diffstat (limited to 'ui/Lobby.gd')
-rw-r--r--ui/Lobby.gd31
1 files changed, 21 insertions, 10 deletions
diff --git a/ui/Lobby.gd b/ui/Lobby.gd
index 1d314b9..b2cbd7f 100644
--- a/ui/Lobby.gd
+++ b/ui/Lobby.gd
@@ -133,23 +133,34 @@ func _on_data(data: Dictionary) -> void:
match data["movetype"]:
Network.MOVEHEADERS.passant:
# en passant
- var end_pos = Vector2(dict2vec(data["positions"][1]))
- var start_piece = Piece.at_pos(Vector2(dict2vec(data["positions"][0])))
- Piece.at_pos(Vector2(dict2vec(data["positions"][2]))).took() # kill the unfortunate
+ var end_pos = dict2vec(data["positions"][1])
+ var start_piece = Piece.at_pos(dict2vec(data["positions"][0]))
+ Piece.at_pos(dict2vec(data["positions"][2])).took() # kill the unfortunate
start_piece.passant(end_pos)
- Network.MOVEHEADERS.take:
- var start_piece = Piece.at_pos(Vector2(dict2vec(data["positions"][0])))
- var end_piece = Piece.at_pos(Vector2(dict2vec(data["positions"][1])))
- start_piece.take(end_piece)
Network.MOVEHEADERS.move:
- var end_pos = Vector2(dict2vec(data["positions"][1]))
- var start_piece = Piece.at_pos(Vector2(dict2vec(data["positions"][0])))
- start_piece.moveto(end_pos)
+ var start_piece = Piece.at_pos(dict2vec(data["positions"][0]))
+ var end_pos = dict2vec(data["positions"][1])
+ var end_piece = Piece.at_pos(end_pos)
+ if end_piece != null:
+ start_piece.take(end_piece)
+ else:
+ start_piece.moveto(end_pos)
Network.MOVEHEADERS.castle:
var king = Piece.at_pos(dict2vec(data["positions"]["king"]))
var rook = Piece.at_pos(dict2vec(data["positions"]["rook"]))
rook.moveto(dict2vec(data["positions"]["rookdestination"]), true, false, true)
Utils.add_move(king.castle(dict2vec(data["positions"]["kingdestination"])))
+ Network.MOVEHEADERS.promote:
+ var dict_data = data["positions"] # positions is a dict for readability sometimes
+ var pawn = Piece.at_pos(dict2vec(dict_data["start_position"]))
+ var dest = dict2vec(dict_data["destination"])
+ if Piece.at_pos(dest) != null:
+ Piece.at_pos(dest).took() # move the pawn to the new place, killing if necessary
+ pawn.clear_clicked()
+ Globals.grid.make_piece(dest, Pawn.piece(dict_data["become"]), dict_data["white"]) # create the promotion
+ pawn.took() # kill the pawn
+ Utils.add_move(dict_data["notation"]) # add a move
+ Globals.grid.print_matrix_pretty(Globals.grid.matrix)
func dict2vec(dict: Dictionary) -> Vector2: