Testing getting user data when joining

This commit is contained in:
Chris Bell 2024-12-11 20:26:26 -06:00
parent 02757058f6
commit 4a8cb3813e
3 changed files with 102 additions and 12 deletions

View File

@ -12,6 +12,8 @@ var lobby_id: int = 0
var lobby_members: Array = []
var lobby_members_max: int = 4
signal user_joined_lobby(steam_id: int, username: String)
func _ready() -> void:
var init_result = Steam.steamInit(true, 480)
if init_result["status"] <= 1:
@ -141,6 +143,7 @@ func read_p2p_packet() -> void:
"handshake":
GameConsole.print_line("Handshake from: " + read_data["username"])
get_lobby_members()
user_joined_lobby.emit(packet_sender, read_data["username"])
"chat":
GameConsole.print_line(read_data["username"] + ": " + read_data["message"])
_:

View File

@ -5,26 +5,31 @@ extends Control
@export var host_button: Button
@export var join_button: Button
@export var lobby_id: LineEdit
@export var pfp: TextureRect
@export var username: Label
@export var hosted_lobby_id: Label
@export var user_box1: HBoxContainer
@export var user_box2: HBoxContainer
@export var user_box3: HBoxContainer
@export var user_box4: HBoxContainer
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
host_button.button_down.connect(_on_host_button_pressed)
join_button.button_down.connect(_on_join_button_pressed)
network_manager.user_joined_lobby.connect(_on_user_joined_lobby)
username.text = network_manager.username
user_box1.get_node("Username").text = network_manager.username
if network_manager.avatar_texture == null:
GameConsole.log_error("Avatar texture is null!")
get_tree().create_timer(0.005).timeout.connect(
func():
pfp.texture = network_manager.avatar_texture
user_box1.get_node("PFP").texture = network_manager.avatar_texture
)
else:
pfp.texture = network_manager.avatar_texture
user_box1.get_node("PFP").texture = network_manager.avatar_texture
func _on_host_button_pressed() -> void:
@ -39,3 +44,38 @@ func _on_host_button_pressed() -> void:
func _on_join_button_pressed() -> void:
network_manager.join_lobby(int(lobby_id.text))
func _on_user_joined_lobby(user_id: int, username: String) -> void:
if network_manager.lobby_members[1] == null:
user_box2.get_node("Username").text = username
user_box2.get_node("PFP").texture = load_avatar(user_id)
user_box2.visible = true
elif network_manager.lobby_members[2] == null:
user_box3.get_node("Username").text = username
user_box3.get_node("PFP").texture = load_avatar(user_id)
user_box3.visible = true
elif network_manager.lobby_members[3] == null:
user_box4.get_node("Username").text = username
user_box4.get_node("PFP").texture = load_avatar(user_id)
user_box4.visible = true
else:
GameConsole.log_error("Lobby is full!")
func load_avatar(user_id: int) -> ImageTexture:
Steam.getPlayerAvatar(user_id)
Steam.avatar_loaded.connect(
func(_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:
return ImageTexture.create_from_image(avatar_image)
else:
GameConsole.log_error("Failed to create avatar image!")
)
return null

View File

@ -8,7 +8,7 @@
[node name="NetworkManager" parent="." instance=ExtResource("1_i1w5w")]
[node name="UiRoot" type="Control" parent="." node_paths=PackedStringArray("network_manager", "host_button", "join_button", "lobby_id", "pfp", "username", "hosted_lobby_id")]
[node name="UiRoot" type="Control" parent="." node_paths=PackedStringArray("network_manager", "host_button", "join_button", "lobby_id", "hosted_lobby_id", "user_box1", "user_box2", "user_box3", "user_box4")]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
@ -20,9 +20,11 @@ network_manager = NodePath("../NetworkManager")
host_button = NodePath("Panel/HBoxContainer/VBoxContainer/Host")
join_button = NodePath("Panel/HBoxContainer/VBoxContainer/Join")
lobby_id = NodePath("Panel/HBoxContainer/VBoxContainer/LobbyID")
pfp = NodePath("Panel/HBoxContainer/VBoxContainer2/HBoxContainer/PFP")
username = NodePath("Panel/HBoxContainer/VBoxContainer2/HBoxContainer/Username")
hosted_lobby_id = NodePath("Panel/HBoxContainer/VBoxContainer/HostedLobbyID")
user_box1 = NodePath("Panel/HBoxContainer/VBoxContainer2/UserBox1")
user_box2 = NodePath("Panel/HBoxContainer/VBoxContainer2/UserBox2")
user_box3 = NodePath("Panel/HBoxContainer/VBoxContainer2/UserBox3")
user_box4 = NodePath("Panel/HBoxContainer/VBoxContainer2/UserBox4")
[node name="Panel" type="Panel" parent="UiRoot"]
layout_mode = 1
@ -65,17 +67,62 @@ text = "Lobby hosted: "
layout_mode = 2
size_flags_horizontal = 3
[node name="HBoxContainer" type="HBoxContainer" parent="UiRoot/Panel/HBoxContainer/VBoxContainer2"]
[node name="UserBox1" type="HBoxContainer" parent="UiRoot/Panel/HBoxContainer/VBoxContainer2"]
layout_mode = 2
[node name="PFP" type="TextureRect" parent="UiRoot/Panel/HBoxContainer/VBoxContainer2/HBoxContainer"]
[node name="PFP" type="TextureRect" parent="UiRoot/Panel/HBoxContainer/VBoxContainer2/UserBox1"]
custom_minimum_size = Vector2(128, 128)
layout_mode = 2
size_flags_horizontal = 4
texture = ExtResource("3_co2ix")
expand_mode = 1
[node name="Username" type="Label" parent="UiRoot/Panel/HBoxContainer/VBoxContainer2/HBoxContainer"]
[node name="Username" type="Label" parent="UiRoot/Panel/HBoxContainer/VBoxContainer2/UserBox1"]
layout_mode = 2
size_flags_horizontal = 8
text = "username"
text = "Hagrid 1"
[node name="UserBox2" type="HBoxContainer" parent="UiRoot/Panel/HBoxContainer/VBoxContainer2"]
layout_mode = 2
[node name="PFP" type="TextureRect" parent="UiRoot/Panel/HBoxContainer/VBoxContainer2/UserBox2"]
custom_minimum_size = Vector2(128, 128)
layout_mode = 2
size_flags_horizontal = 4
texture = ExtResource("3_co2ix")
expand_mode = 1
[node name="Username" type="Label" parent="UiRoot/Panel/HBoxContainer/VBoxContainer2/UserBox2"]
layout_mode = 2
size_flags_horizontal = 8
text = "Hagrid 2"
[node name="UserBox3" type="HBoxContainer" parent="UiRoot/Panel/HBoxContainer/VBoxContainer2"]
layout_mode = 2
[node name="PFP" type="TextureRect" parent="UiRoot/Panel/HBoxContainer/VBoxContainer2/UserBox3"]
custom_minimum_size = Vector2(128, 128)
layout_mode = 2
size_flags_horizontal = 4
texture = ExtResource("3_co2ix")
expand_mode = 1
[node name="Username" type="Label" parent="UiRoot/Panel/HBoxContainer/VBoxContainer2/UserBox3"]
layout_mode = 2
size_flags_horizontal = 8
text = "Hagrid 3"
[node name="UserBox4" type="HBoxContainer" parent="UiRoot/Panel/HBoxContainer/VBoxContainer2"]
layout_mode = 2
[node name="PFP" type="TextureRect" parent="UiRoot/Panel/HBoxContainer/VBoxContainer2/UserBox4"]
custom_minimum_size = Vector2(128, 128)
layout_mode = 2
size_flags_horizontal = 4
texture = ExtResource("3_co2ix")
expand_mode = 1
[node name="Username" type="Label" parent="UiRoot/Panel/HBoxContainer/VBoxContainer2/UserBox4"]
layout_mode = 2
size_flags_horizontal = 8
text = "Hagrid 4"