summaryrefslogtreecommitdiff
path: root/UI/players_list.gd
blob: 598d7adda9d8ec809c9eb1e6bdaeef73245027a0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
extends PanelContainer


@onready var list: Control = %List


func _ready() -> void:
	#players_list_container.visible = false
	Client.player.score_changed.connect(update_players)
	Network.players_changed.connect(update_players)
	update_players()
	
	multiplayer.peer_disconnected.connect(remove_player)


func update_players():
	for id in Network.get_ordered_player_ids():
		var player: Player = Network.get_player(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(player.username)
		control.get_node("%ID").tooltip_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)))