2024-02-28 05:30:45 +00:00
|
|
|
extends PanelContainer
|
|
|
|
class_name PlayersList
|
|
|
|
|
|
|
|
|
|
|
|
@onready var layout = $"Scrollable/Layout"
|
|
|
|
|
2024-03-10 04:51:36 +00:00
|
|
|
const label_scene: PackedScene = preload("res://scenes/player_label.tscn")
|
2024-02-28 05:30:45 +00:00
|
|
|
|
2024-03-10 04:51:36 +00:00
|
|
|
var labels_by_playernode: Dictionary = {}
|
|
|
|
|
|
|
|
|
|
|
|
func _on_playernode_created(playernode: PlayerNode) -> void:
|
|
|
|
var label_instance = label_scene.instantiate()
|
2024-03-11 04:09:33 +00:00
|
|
|
label_instance.set_player_name(playernode.player_name)
|
|
|
|
label_instance.set_player_color(playernode.player_color)
|
|
|
|
label_instance.set_possessed(playernode.get_multiplayer_authority())
|
2024-03-10 04:51:36 +00:00
|
|
|
labels_by_playernode[playernode] = label_instance
|
|
|
|
layout.add_child(label_instance)
|
|
|
|
|
|
|
|
func _on_playernode_destroyed(playernode: PlayerNode) -> void:
|
|
|
|
labels_by_playernode[playernode].queue_free()
|
|
|
|
labels_by_playernode.erase(playernode)
|
|
|
|
|
|
|
|
func _on_playernode_name_changed(_old: String, new: String, playernode: PlayerNode) -> void:
|
|
|
|
labels_by_playernode[playernode].set_player_name(new)
|
|
|
|
|
|
|
|
func _on_playernode_color_changed(_old: Color, new: Color, playernode: PlayerNode) -> void:
|
|
|
|
labels_by_playernode[playernode].set_player_color(new)
|
|
|
|
|
|
|
|
func _on_playernode_possessed(_old: int, new: int, playernode: PlayerNode) -> void:
|
|
|
|
labels_by_playernode[playernode].set_possessed(new)
|
2024-02-28 05:30:45 +00:00
|
|
|
|