Moved avatar loading to be solely the network managers job

This commit is contained in:
Chris Bell 2024-12-12 22:05:42 -06:00
parent 0804f44c56
commit 02617f2b5b
2 changed files with 13 additions and 16 deletions

View File

@ -14,9 +14,6 @@ var lobby_members_max: int = 4
var lobby_members_avatar_cache: Dictionary = {}
signal user_joined_lobby(steam_id: int, username: String)
signal avatar_ready(user_id: int, avatar_texture: ImageTexture)
func _ready() -> void:
var init_result = Steam.steamInit(true, 480)
@ -46,6 +43,9 @@ func _process(_delta: float) -> void:
func _on_avatar_loaded(user_id: int, avatar_size: int, avatar_buffer: PackedByteArray) -> void:
if lobby_members_avatar_cache.has(user_id):
return
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)
@ -55,7 +55,6 @@ func _on_avatar_loaded(user_id: int, avatar_size: int, avatar_buffer: PackedByte
if user_id == steam_id:
my_avatar_texture = avatar_texture
avatar_ready.emit(user_id, avatar_texture)
GameConsole.print_line("Avatar loaded for: " + Steam.getFriendPersonaName(user_id))
lobby_members_avatar_cache[user_id] = avatar_texture
else:
@ -118,7 +117,9 @@ 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})
Steam.getPlayerAvatar(member_id)
user_joined_lobby.emit(member_id, member_username)
await get_tree().create_timer(0.3).timeout
@ -151,7 +152,7 @@ func read_p2p_packet() -> void:
match read_data["message"]:
"handshake":
GameConsole.print_line("Handshake from: " + read_data["username"])
get_lobby_members()
await get_lobby_members()
"chat":
GameConsole.print_line(read_data["username"] + ": " + read_data["message"])
_:

View File

@ -54,18 +54,14 @@ func _on_user_joined_lobby(user_id: int, username: String) -> void:
users_list.add_child(user_box)
user_box.get_node("Username").text = username
get_avatar(user_id, user_box)
user_box.get_node("PFP").texture = get_avatar(user_id)
func get_avatar(user_id: int, user_box: Node) -> void:
Steam.getPlayerAvatar(user_id)
network_manager.avatar_ready.connect(
func(user_id: int, avatar_texture: ImageTexture):
if network_manager.lobby_members_avatar_cache[user_id] != null:
user_box.get_node("PFP").texture = network_manager.lobby_members_avatar_cache[user_id]
else:
GameConsole.log_error("Avatar not found for: " + Steam.getFriendPersonaName(user_id))
)
func get_avatar(user_id: int) -> ImageTexture:
if network_manager.lobby_members_avatar_cache.has(user_id):
return network_manager.lobby_members_avatar_cache[user_id]
else:
GameConsole.log_error("Avatar not found for: " + Steam.getFriendPersonaName(user_id))
return null