online multiplayer chess game (note server currently down)
Diffstat (limited to 'pieces/Pawn.gd')
| -rw-r--r-- | pieces/Pawn.gd | 53 |
1 files changed, 25 insertions, 28 deletions
diff --git a/pieces/Pawn.gd b/pieces/Pawn.gd index 298e00a..949819a 100644 --- a/pieces/Pawn.gd +++ b/pieces/Pawn.gd @@ -9,7 +9,6 @@ var enpassant := [] var promoteposition := Vector2() var promotetake := false -var promote_prev_pos := Vector2() onready var whiteint := 1 if white else -1 onready var sprites := [] @@ -40,13 +39,14 @@ func _exit_tree() -> void: func moveto(position, real = true, take = false, override_moveto = false) -> void: # check if 2 step - if real and !twostepfirstmove and !has_moved: - if white and real_position.y - position.y == 2: - twostepfirstmove = true - just_set = true - if !white and position.y - real_position.y == 2: - twostepfirstmove = true - just_set = true + if real: + if !twostepfirstmove and !has_moved: + if white and real_position.y - position.y == 2: + twostepfirstmove = true + just_set = true + if !white and position.y - real_position.y == 2: + twostepfirstmove = true + just_set = true .moveto(position, real, take, override_moveto) if real: Globals.reset_halfmove() @@ -121,12 +121,9 @@ func en_passant(turncheck = true) -> Array: # in passing func promote(position, type) -> void: - promote_prev_pos = real_position if type == "take": - take(at_pos(position), true) - promotetake = true - else: - moveto(position, true, false, true) # dont add the algebraic position + at_pos(position).hide() + move(position) # only move the visuals promoteposition = position darken.show() for i in range(len(promotables)): @@ -134,29 +131,29 @@ func promote(position, type) -> void: sprites[i].show() -func take(piece: Piece, overridemoveto = false) -> void: - clear_clicked() - piece.took() - moveto(piece.real_position, true, true, overridemoveto) - Globals.reset_halfmove() - - func handle_sprite_input_event(node) -> void: darken.hide() - var script = piece(promotables[sprites.find(node)][0]) + var promote_to = promotables[sprites.find(node)][0] var first = ( algebraic_move_notation(promoteposition) if !promotetake - else algebraic_take_notation(promoteposition, promote_prev_pos) + else algebraic_take_notation(promoteposition, real_position) + ) + var notation = "%s=%s" % [first, promote_to] + Globals.grid.promoting = null + Globals.network.send_move_packet( + { + "start_position": real_position, + "destination": promoteposition, + "become": promote_to, + "notation": notation, + "white": white + }, + Network.MOVEHEADERS.promote ) - Utils.add_move("%s=%s" % [first, promotables[sprites.find(node)][0]]) - Globals.grid.make_piece(real_position, script, white) - Globals.grid.turn_over() - clear_clicked() - queue_free() -func piece(string) -> String: +static func piece(string) -> String: match string: "Q": return "res://pieces/Queen.gd" |