summaryrefslogtreecommitdiff
path: root/UI/players_list.gd
diff options
context:
space:
mode:
Diffstat (limited to 'UI/players_list.gd')
-rw-r--r--UI/players_list.gd33
1 files changed, 33 insertions, 0 deletions
diff --git a/UI/players_list.gd b/UI/players_list.gd
new file mode 100644
index 0000000..c1ca00f
--- /dev/null
+++ b/UI/players_list.gd
@@ -0,0 +1,33 @@
+extends PanelContainer
+
+
+@onready var list: Control = %List
+
+
+func _ready() -> void:
+ #players_list_container.visible = false
+ Network.players_changed.connect(update_players)
+ update_players()
+
+ multiplayer.peer_disconnected.connect(remove_player)
+
+
+func update_players():
+ for id in Network.players.keys():
+ var player: Player = Network.players[id]
+
+ var control: Control = list.get_node_or_null(str(id))
+ if not control:
+ control = preload("res://UI/PlayersListItem.tscn").instantiate()
+ control.name = str(id)
+ control.modulate = player.get_color()
+ control.get_node("%Indicator").visible = id == multiplayer.get_unique_id()
+ list.add_child(control)
+
+ control.get_node("%ID").text = str(id)
+ control.get_node("%Score").text = str(player.score)
+ list.move_child(control, Network.get_ordered_player_ids().find(id) + 1)
+
+
+func remove_player(id):
+ list.remove_child(list.get_node(str(id)))