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
| -rw-r--r-- | ui/menus/local_multiplayer/LocalMultiplayer.gd | 15 | ||||
| -rw-r--r-- | ui/menus/sidebarright/UserPanel.gd | 10 | ||||
| -rw-r--r-- | ui/menus/sidebarright/UserPanel.tscn | 14 |
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 |