User list should now also populate on the client who joins

This commit is contained in:
Chris Bell 2024-12-12 20:59:16 -06:00
parent 8f1455f9f6
commit 30fa3b4adb
2 changed files with 27 additions and 26 deletions

View File

@ -110,6 +110,7 @@ func get_lobby_members():
var member_id: int = Steam.getLobbyMemberByIndex(lobby_id, member)
var member_username: String = Steam.getFriendPersonaName(member_id)
lobby_members.append({"steam_id": member_id, "username": member_username})
user_joined_lobby.emit(member_id, member_username)

View File

@ -10,7 +10,7 @@ extends Control
@export var user_box_prefab: PackedScene
var avatar_image_cache: ImageTexture
var avatar_image_cache: Dictionary = {}
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
@ -33,6 +33,9 @@ func _ready() -> void:
else:
user_box1.get_node("PFP").texture = network_manager.avatar_texture
# Connect the avatar_loaded signal once
Steam.avatar_loaded.connect(_on_avatar_loaded)
func _on_host_button_pressed() -> void:
network_manager.create_lobby()
@ -59,23 +62,20 @@ func _on_user_joined_lobby(user_id: int, username: String) -> void:
func load_avatar(user_id: int) -> ImageTexture:
avatar_image_cache = null
avatar_image_cache[user_id] = null
Steam.getPlayerAvatar(user_id)
Steam.avatar_loaded.connect(_on_avatar_loaded)
while avatar_image_cache == null:
while avatar_image_cache[user_id] == null:
await get_tree().create_timer(0.1).timeout
return avatar_image_cache
return avatar_image_cache[user_id]
func _on_avatar_loaded(_user_id: int, avatar_size: int, avatar_buffer: PackedByteArray) -> void:
func _on_avatar_loaded(user_id: int, avatar_size: int, avatar_buffer: PackedByteArray) -> void:
var avatar_image: Image = Image.create_from_data(avatar_size, avatar_size, false, Image.FORMAT_RGBA8, avatar_buffer)
if avatar_size > 128:
avatar_image.resize(128, 128, Image.INTERPOLATE_LANCZOS)
if avatar_image != null:
avatar_image_cache = ImageTexture.create_from_image(avatar_image)
avatar_image_cache[user_id] = ImageTexture.create_from_image(avatar_image)
else:
GameConsole.log_error("Failed to create avatar image!")