online multiplayer chess game (note server currently down)
Diffstat (limited to 'ui/menus/local_multiplayer/LocalMultiplayer.gd')
| -rw-r--r-- | ui/menus/local_multiplayer/LocalMultiplayer.gd | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/ui/menus/local_multiplayer/LocalMultiplayer.gd b/ui/menus/local_multiplayer/LocalMultiplayer.gd index 652a22f..62ac0e8 100644 --- a/ui/menus/local_multiplayer/LocalMultiplayer.gd +++ b/ui/menus/local_multiplayer/LocalMultiplayer.gd @@ -33,26 +33,44 @@ func create(moves: PoolStringArray, player1_color: bool, players: PoolIntArray, board_engine_bridge = BoardEngineBridge.new(b, [Chess.__swap_color(b.team)], get_tree(), engine_depth) ui._on_info(BoardEngineBridge.info) board_engine_bridge.connect("nps", self, "set_nps", [1 if player1_color == true else 0]) + board_engine_bridge.connect("depth", self, "set_thinking", [1 if player1_color == true else 0]) MODES.EVE: b.team = b.chess.turn Globals.spectating = true board_engine_bridge = BoardEngineBridge.new(b, ["w", "b"], get_tree(), engine_depth) ui._spectate_info({white = BoardEngineBridge.info, black = BoardEngineBridge.info}) board_engine_bridge.connect("nps", self, "set_nps") + board_engine_bridge.connect("depth", self, "set_thinking") get_tree().call_group("backbutton", "queue_free") yield(get_tree(), "idle_frame") + if mode in [MODES.EVE, MODES.PVE]: + for panel in ui.panels: + panel.thinking_display.max_value = engine_depth + b.load_pgn(moves.join(" ")) # load_pgn emits Events.turn_over b.auto_flip() Globals.chat.hide() in_game = true -func set_nps(nps: int, on: int = 0 if board_engine_bridge.stockfish.game.turn == "w" else 1) -> void: +func flip_int(i: int) -> int: + return 1 if i == 0 else 0 + + +func set_nps(nps: int, on: int = 0 if board_engine_bridge.turn == "w" else 1) -> void: if is_instance_valid(ui.panels[on]): ui.panels[on].nps = nps - ui.panels[1 if on == 0 else 0].nps = 0 # turn it off + ui.panels[flip_int(on)].nps = 0 # turn it off + + +# thinking: depth +func set_thinking(thinking: int, on: int = 0 if board_engine_bridge.turn == "w" else 1): + if is_instance_valid(ui.panels[on]): + if thinking == 0 || ui.panels[on].thinking < thinking: # depth can go down too + ui.panels[on].thinking = thinking + ui.panels[flip_int(on)].thinking = 0 func assign_mode(players: PoolIntArray) -> void: @@ -97,6 +115,7 @@ func go_back(_reason: String, _isok: bool) -> void: class BoardEngineBridge: extends Reference signal nps(nps) + signal depth(depth) const info := {name = "Stockfish", country = "antartica"} @@ -107,6 +126,11 @@ class BoardEngineBridge: var depth: int var searching: bool = false + var turn: String = "" setget , get_turn + + func get_turn() -> String: + return stockfish.game.turn + func _init(board: Grid, teams: PoolStringArray, _tree: SceneTree, _depth: int) -> void: depth = _depth tree = _tree @@ -127,6 +151,8 @@ class BoardEngineBridge: return if info.get("nps", false): emit_signal("nps", info.nps) + if info.get("depth", false): + emit_signal("depth", info.depth) if info.get("pv", false): var bm = stockfish.game.__move_from_uci(info.pv[0]) clear_arrows() @@ -154,6 +180,7 @@ class BoardEngineBridge: yield(tree, "idle_frame") var move: String = yield(bestmove(), "completed") emit_signal("nps", 0) + emit_signal("depth", 0) b.move(move, false, false) func set_engine_position(): |