online multiplayer chess game (note server currently down)
Diffstat (limited to 'ui/board/Board.gd')
| -rw-r--r-- | ui/board/Board.gd | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/ui/board/Board.gd b/ui/board/Board.gd index 0ff3646..e6af0d5 100644 --- a/ui/board/Board.gd +++ b/ui/board/Board.gd @@ -55,6 +55,7 @@ var chess := Chess.new() var local := false var spectating := false var team: String +var auto_change_team := false func _init(): @@ -99,9 +100,6 @@ func set_take_move_circle_color( func _ready(): - if !team: - team = "w" - local = true set_take_move_circle_color() _resized() Events.connect("turn_over", self, "_on_turn_over") @@ -109,6 +107,10 @@ func _ready(): create_pieces() create_squares() create_labels() + yield(get_tree(), "idle_frame") + if !team: + team = chess.turn + auto_change_team = true Log.debug("board: ready") @@ -308,8 +310,9 @@ func move(san: String, send := true, create_promotion_input := true) -> void: var move_0x88 = chess.__move_from_san(san, true) var valid_moves = chess.moves({square = chess.algebraic(move_0x88.from), stripped = true}) if valid_moves.find(chess.stripped_san(san)) == -1: - Log.err("Invalid move") + Log.err("Invalid move " + san) return + Log.debug("Making move " + san) chess.__make_move(move_0x88) if move_0x88.flags & Chess.BITS.CAPTURE: board[move_0x88.to].took() @@ -371,7 +374,8 @@ func load_pgn(pgn: String) -> void: clear_pieces() create_pieces() emit_signal("clear_pgn") - var movs: PoolStringArray = Pgn.parse(pgn).moves + var pgn_parser := PGN.new() + var movs: PoolStringArray = pgn_parser.parse(pgn).moves emit_signal("load_pgn", movs) Log.info("load pgn " + pgn) Events.emit_signal("turn_over") @@ -389,10 +393,17 @@ func undo(two: bool = false) -> void: Events.emit_signal("turn_over") +func auto_flip(): + if team == Chess.WHITE and flipped: + flip_board() + elif team == Chess.BLACK and not flipped: + flip_board() + + func _on_turn_over(): - if local: + if auto_change_team: team = chess.turn - flip_board() + auto_flip() if is_my_turn(): set_take_move_circle_color() |