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.gd23
1 files changed, 19 insertions, 4 deletions
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: