summaryrefslogtreecommitdiff
path: root/UI/players_list.gd
blob: 6bb7e140e19b7bdd09823513cfdbf53a155cfea1 (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
36
37
extends PanelContainer


@export var players: Array[Player]:
	set(value):
		players = value
		update_players()

@onready var list: Control = %List


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


func update_players():
	for player in players:
		var control: Control = list.get_node_or_null(str(player.id))
		if not control:
			control = preload("res://UI/PlayersListItem.tscn").instantiate()
			control.name = str(player.id)
			control.modulate = player.get_color()
			control.get_node("%Indicator").visible = player.id == multiplayer.get_unique_id()
			list.add_child(control)
		
		control.get_node("%ID").text = str(player.username)
		control.get_node("%ID").tooltip_text = str(player.id)
		control.get_node("%Score").text = str(player.income)
		list.move_child(control, Network.get_ordered_player_ids().find(player.id) + 1)


func remove_player(id):
	list.remove_child(list.get_node(str(id)))
	#players.remove_at(players.filter(func(item): return item.id == id)[0]) TODO