online multiplayer chess game (note server currently down)
add a stockflish loading spinny thing so i have something to look at when im playing stockfish on the stairwell and the wifi is slow so stockfish is taking for ever to load
bendn 2022-10-20
parent 1a1edc2 · commit bd329d1
-rw-r--r--ui/menus/local_multiplayer/LocalMultiplayer.gd15
-rw-r--r--ui/menus/sidebarright/UserPanel.gd10
-rw-r--r--ui/menus/sidebarright/UserPanel.tscn14
3 files changed, 38 insertions, 1 deletions
diff --git a/ui/menus/local_multiplayer/LocalMultiplayer.gd b/ui/menus/local_multiplayer/LocalMultiplayer.gd
index b9a8f60..bdd232c 100644
--- a/ui/menus/local_multiplayer/LocalMultiplayer.gd
+++ b/ui/menus/local_multiplayer/LocalMultiplayer.gd
@@ -35,6 +35,10 @@ func create(moves: PoolStringArray, player1_color: bool, players: PoolIntArray,
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])
+ if board_engine_bridge.is_ready() == false:
+ var engine_p: UserPanel = ui.panels[int(Globals.grid.team == "w")]
+ engine_p.loading = true
+ board_engine_bridge.connect("ready", engine_p, "set_loading", [false])
MODES.EVE:
b.team = b.chess.turn
Globals.spectating = true
@@ -42,6 +46,10 @@ func create(moves: PoolStringArray, player1_color: bool, players: PoolIntArray,
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")
+ if board_engine_bridge.is_ready() == false:
+ for e_p in ui.panels:
+ e_p.loading = true
+ board_engine_bridge.connect("ready", e_p, "set_loading", [false])
get_tree().call_group("backbutton", "queue_free")
@@ -121,6 +129,8 @@ class BoardEngineBridge:
extends Reference
signal nps(nps)
signal depth(depth)
+ # warning-ignore:unused_signal
+ signal ready # is emitted by connect_signals[#l4]
const info := {name = "Stockfish", country = "antartica"}
@@ -130,12 +140,16 @@ class BoardEngineBridge:
var tree: SceneTree
var depth: int
var searching: bool = false
+ var ready: bool setget , is_ready
var turn: String = "" setget , get_turn
func get_turn() -> String:
return stockfish.game.turn
+ func is_ready() -> bool:
+ return stockfish.engine_ready
+
func _init(board: Grid, teams: PoolStringArray, _tree: SceneTree, _depth: int) -> void:
depth = _depth
tree = _tree
@@ -150,6 +164,7 @@ class BoardEngineBridge:
stockfish.connect("info", self, "_info")
stockfish.connect("bestmove", self, "clear_arrows")
stockfish.connect("bestmove", self, "play_bestmove")
+ stockfish.connect("engine_ready", self, "emit_signal", ["ready"])
Events.connect("turn_over", self, "turn_over")
func undo(two: bool = false) -> void:
diff --git a/ui/menus/sidebarright/UserPanel.gd b/ui/menus/sidebarright/UserPanel.gd
index 5b5f2af..2e883c1 100644
--- a/ui/menus/sidebarright/UserPanel.gd
+++ b/ui/menus/sidebarright/UserPanel.gd
@@ -5,11 +5,13 @@ onready var flag_display = $"%Flag"
onready var name_display = $"%Name"
onready var nps_display = $"%Nps"
onready var thinking_display = $"%ThinkingProgress"
+onready var loading_display = $"%LoadingAnimation"
var flag := "rainbow" setget set_flag
var _name := "name" setget set_name
var nps := 0 setget set_nps
var thinking := 0 setget set_thinking
+var loading := false setget set_loading, get_loading # reference to loading_display.visible
func set_flag(newflag: String) -> void:
@@ -60,3 +62,11 @@ func set_thinking(new_thinking: int) -> void:
create_tween().tween_property(thinking_display, "value", float(new_thinking), .25)
thinking = new_thinking
+
+
+func set_loading(new_loading: bool) -> void:
+ loading_display.visible = new_loading
+
+
+func get_loading() -> bool:
+ return loading_display.visible
diff --git a/ui/menus/sidebarright/UserPanel.tscn b/ui/menus/sidebarright/UserPanel.tscn
index 17c1cb7..8e73ec7 100644
--- a/ui/menus/sidebarright/UserPanel.tscn
+++ b/ui/menus/sidebarright/UserPanel.tscn
@@ -1,9 +1,10 @@
-[gd_scene load_steps=7 format=2]
+[gd_scene load_steps=8 format=2]
[ext_resource path="res://ui/ubuntu-bold-regular.tres" type="DynamicFont" id=1]
[ext_resource path="res://assets/flags/rainbow.png" type="Texture" id=2]
[ext_resource path="res://ui/theme/main.theme" type="Theme" id=3]
[ext_resource path="res://ui/menus/sidebarright/UserPanel.gd" type="Script" id=4]
+[ext_resource path="res://ui/animations/thehalo.tres" type="Material" id=5]
[sub_resource type="StyleBoxFlat" id=1]
bg_color = Color( 0.372549, 0.564706, 0.152941, 1 )
@@ -31,6 +32,17 @@ margin_right = 1422.0
margin_bottom = 30.0
custom_constants/separation = 10
+[node name="LoadingAnimation" type="ColorRect" parent="V/H"]
+unique_name_in_owner = true
+visible = false
+material = ExtResource( 5 )
+margin_top = 2.0
+margin_right = 25.0
+margin_bottom = 27.0
+rect_min_size = Vector2( 25, 25 )
+size_flags_horizontal = 4
+size_flags_vertical = 4
+
[node name="Name" type="Label" parent="V/H"]
unique_name_in_owner = true
margin_right = 52.0