online multiplayer chess game (note server currently down)
make stockfish show arrow of the current line
| -rw-r--r-- | ui/board/Arrows.gd | 8 | ||||
| -rw-r--r-- | ui/menus/local_multiplayer/LocalMultiplayer.gd | 23 |
2 files changed, 24 insertions, 7 deletions
diff --git a/ui/board/Arrows.gd b/ui/board/Arrows.gd index b0b559a..a1d577d 100644 --- a/ui/board/Arrows.gd +++ b/ui/board/Arrows.gd @@ -64,6 +64,10 @@ func shorten_arrows_at(v: Vector2) -> void: arrow.dest = shorten(arrow.coord_dest, arrow.origin, shorten) +func build_arrow(from: Vector2, to: Vector2, color: Color) -> Dictionary: + return {origin = from, dest = to, coord_dest = to, color = color} + + func _draw(): if !b: return @@ -86,9 +90,7 @@ func _draw(): flag = false break if flag: - arrows.append( - {origin = arrow_origin, dest = mouse_position, color = clr, coord_dest = mouse_position} - ) + arrows.append(build_arrow(arrow_origin, mouse_position, clr)) shorten_arrows_at(mouse_position) elif t <= .25: for i in range(len(circles)): diff --git a/ui/menus/local_multiplayer/LocalMultiplayer.gd b/ui/menus/local_multiplayer/LocalMultiplayer.gd index 383d8a6..232eefb 100644 --- a/ui/menus/local_multiplayer/LocalMultiplayer.gd +++ b/ui/menus/local_multiplayer/LocalMultiplayer.gd @@ -98,7 +98,6 @@ class BoardEngineBridge: const info := {name = "Stockfish", country = "antartica"} - var curr_bestmove: Dictionary var b: Grid var stockfish: Stockfish var playing := PoolStringArray() @@ -118,6 +117,7 @@ class BoardEngineBridge: func connect_signals(): stockfish.connect("info", self, "_info") + stockfish.connect("bestmove", self, "clear_arrows") Events.connect("turn_over", self, "turn_over") func _info(info: Dictionary): @@ -126,7 +126,22 @@ class BoardEngineBridge: if info.get("nps", false): emit_signal("nps", info.nps) if info.get("pv", false): - curr_bestmove = stockfish.game.__move_from_uci(info.pv[0]) + var bm = stockfish.game.__move_from_uci(info.pv[0]) + clear_arrows() + var arrows := b.arrows + var arrow: Dictionary = arrows.build_arrow( + Chess.vecfrom0x88(bm.from), Chess.vecfrom0x88(bm.to), Color(0.286275, 0.564706, 0.768627) + ) + arrow["engine_arrow"] = true + arrows.arrows.append(arrow) + arrows.shorten_arrows_at(Chess.vecfrom0x88(bm.to)) + + func clear_arrows(_arg = ""): + var good_array := [] + for arrow in b.arrows.arrows: + if arrow.get("engine_arrow", false) == false: + good_array.append(arrow) + b.arrows.arrows = good_array func turn_over(): set_engine_position() @@ -135,9 +150,7 @@ class BoardEngineBridge: func play_bestmove(): yield(tree, "idle_frame") - searching = true var move: String = yield(bestmove(), "completed") - searching = false emit_signal("nps", 0) b.move(move, false, false) @@ -146,7 +159,9 @@ class BoardEngineBridge: func bestmove() -> String: stockfish.go(depth) + searching = true var bestmove = yield(stockfish, "bestmove") + searching = false return bestmove.san func kill() -> void: |