More test fixes
This commit is contained in:
parent
1c51964543
commit
b1945e40c3
@ -5,14 +5,18 @@ const PACKET_READ_LIMIT: int = 32
|
|||||||
|
|
||||||
var steam_id: int
|
var steam_id: int
|
||||||
var username: String
|
var username: String
|
||||||
var avatar_texture: ImageTexture
|
var my_avatar_texture: ImageTexture
|
||||||
|
|
||||||
var is_host: bool = false
|
var is_host: bool = false
|
||||||
var lobby_id: int = 0
|
var lobby_id: int = 0
|
||||||
var lobby_members: Array = []
|
var lobby_members: Array = []
|
||||||
var lobby_members_max: int = 4
|
var lobby_members_max: int = 4
|
||||||
|
var lobby_members_avatar_cache: Dictionary = {}
|
||||||
|
|
||||||
signal user_joined_lobby(steam_id: int, username: String)
|
signal user_joined_lobby(steam_id: int, username: String)
|
||||||
|
signal avatar_ready(user_id: int, avatar_texture: ImageTexture)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
var init_result = Steam.steamInit(true, 480)
|
var init_result = Steam.steamInit(true, 480)
|
||||||
@ -41,17 +45,21 @@ func _process(_delta: float) -> void:
|
|||||||
read_all_p2p_packets()
|
read_all_p2p_packets()
|
||||||
|
|
||||||
|
|
||||||
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)
|
var avatar_image: Image = Image.create_from_data(avatar_size, avatar_size, false, Image.FORMAT_RGBA8, avatar_buffer)
|
||||||
if avatar_size > 128:
|
if avatar_size > 128:
|
||||||
avatar_image.resize(128, 128, Image.INTERPOLATE_LANCZOS)
|
avatar_image.resize(128, 128, Image.INTERPOLATE_LANCZOS)
|
||||||
|
|
||||||
|
|
||||||
if avatar_image != null:
|
if avatar_image != null:
|
||||||
avatar_texture = ImageTexture.create_from_image(avatar_image)
|
var avatar_texture = ImageTexture.create_from_image(avatar_image)
|
||||||
GameConsole.print_line("Avatar loaded!")
|
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:
|
else:
|
||||||
GameConsole.log_error("Failed to create avatar image!")
|
GameConsole.log_error("Failed to create avatar image for: " + Steam.getFriendPersonaName(user_id))
|
||||||
|
|
||||||
|
|
||||||
func _on_lobby_created(connection_status: int, this_lobby_id: int) -> void:
|
func _on_lobby_created(connection_status: int, this_lobby_id: int) -> void:
|
||||||
|
@ -10,8 +10,6 @@ extends Control
|
|||||||
|
|
||||||
@export var user_box_prefab: PackedScene
|
@export var user_box_prefab: PackedScene
|
||||||
|
|
||||||
var avatar_image_cache: Dictionary = {}
|
|
||||||
|
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
host_button.button_down.connect(_on_host_button_pressed)
|
host_button.button_down.connect(_on_host_button_pressed)
|
||||||
@ -24,16 +22,15 @@ func _ready() -> void:
|
|||||||
|
|
||||||
user_box1.get_node("Username").text = network_manager.username
|
user_box1.get_node("Username").text = network_manager.username
|
||||||
|
|
||||||
if network_manager.avatar_texture == null:
|
if network_manager.my_avatar_texture == null:
|
||||||
GameConsole.log_error("Avatar texture is null!")
|
|
||||||
get_tree().create_timer(0.005).timeout.connect(
|
get_tree().create_timer(0.005).timeout.connect(
|
||||||
func():
|
func():
|
||||||
user_box1.get_node("PFP").texture = network_manager.avatar_texture
|
user_box1.get_node("PFP").texture = network_manager.my_avatar_texture
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
user_box1.get_node("PFP").texture = network_manager.avatar_texture
|
user_box1.get_node("PFP").texture = network_manager.my_avatar_texture
|
||||||
|
|
||||||
Steam.avatar_loaded.connect(_on_avatar_loaded)
|
Steam.avatar_loaded.connect(network_manager._on_avatar_loaded)
|
||||||
|
|
||||||
|
|
||||||
func _on_host_button_pressed() -> void:
|
func _on_host_button_pressed() -> void:
|
||||||
@ -51,36 +48,22 @@ func _on_join_button_pressed() -> void:
|
|||||||
|
|
||||||
|
|
||||||
func _on_user_joined_lobby(user_id: int, username: String) -> void:
|
func _on_user_joined_lobby(user_id: int, username: String) -> void:
|
||||||
if user_id == network_manager.steam_id:
|
|
||||||
return
|
|
||||||
print(user_id, Steam.getFriendPersonaName(user_id))
|
print(user_id, Steam.getFriendPersonaName(user_id))
|
||||||
var user_box: Node = user_box_prefab.instantiate()
|
var user_box: Node = user_box_prefab.instantiate()
|
||||||
user_box.name = "UserBox_" + str(user_id)
|
user_box.name = "UserBox_" + str(user_id)
|
||||||
users_list.add_child(user_box)
|
users_list.add_child(user_box)
|
||||||
|
|
||||||
user_box.get_node("Username").text = username
|
user_box.get_node("Username").text = username
|
||||||
load_avatar(user_id, user_box)
|
get_avatar(user_id, user_box)
|
||||||
|
|
||||||
|
|
||||||
func load_avatar(user_id: int, user_box: Node) -> void:
|
func get_avatar(user_id: int, user_box: Node) -> void:
|
||||||
avatar_image_cache[user_id] = null
|
|
||||||
Steam.getPlayerAvatar(user_id)
|
Steam.getPlayerAvatar(user_id)
|
||||||
var timer: SceneTreeTimer = get_tree().create_timer(0.1)
|
var timer: SceneTreeTimer = get_tree().create_timer(0.5)
|
||||||
timer.timeout.connect(
|
timer.timeout.connect(
|
||||||
func():
|
func():
|
||||||
if avatar_image_cache[user_id] != null:
|
if network_manager.lobby_members_avatar_cache[user_id] != null:
|
||||||
user_box.get_node("PFP").texture = avatar_image_cache[user_id]
|
user_box.get_node("PFP").texture = network_manager.lobby_members_avatar_cache[user_id]
|
||||||
timer.stop()
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
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[user_id] = ImageTexture.create_from_image(avatar_image)
|
|
||||||
else:
|
|
||||||
GameConsole.log_error("Failed to create avatar image!")
|
|
Loading…
Reference in New Issue
Block a user