diff --git a/addons/godotsteam/win64/~libgodotsteam.windows.template_debug.x86_64.dll b/addons/godotsteam/win64/~libgodotsteam.windows.template_debug.x86_64.dll new file mode 100644 index 0000000..c80cff6 Binary files /dev/null and b/addons/godotsteam/win64/~libgodotsteam.windows.template_debug.x86_64.dll differ diff --git a/assets/core/networking/old/old_network_manager.tscn b/assets/core/networking/old/old_network_manager.tscn deleted file mode 100644 index 3df4efc..0000000 --- a/assets/core/networking/old/old_network_manager.tscn +++ /dev/null @@ -1,6 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://bpmn7t87tfk7f"] - -[ext_resource type="Script" path="res://assets/core/networking/old/old_NetworkManager.gd" id="1_6essl"] - -[node name="NetworkManager" type="Node"] -script = ExtResource("1_6essl") diff --git a/assets/core/networking/old/old_network_test_ui.gd b/assets/core/networking/old/old_network_test_ui.gd deleted file mode 100644 index 6659f3f..0000000 --- a/assets/core/networking/old/old_network_test_ui.gd +++ /dev/null @@ -1,68 +0,0 @@ -extends Control - -@export var network_manager: OldnetworkManager - -@export var host_button: Button -@export var join_button: Button -@export var lobby_id: LineEdit -@export var hosted_lobby_id: LineEdit -@export var users_list: VBoxContainer - -@export var user_box_prefab: PackedScene - - -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) - - var user_box1: Node = user_box_prefab.instantiate() - users_list.add_child(user_box1) - - user_box1.get_node("Username").text = network_manager.my_username - - if network_manager.my_avatar_texture == null: - get_tree().create_timer(0.005).timeout.connect( - func(): - user_box1.get_node("PFP").texture = network_manager.my_avatar_texture - ) - else: - user_box1.get_node("PFP").texture = network_manager.my_avatar_texture - - - -func _on_host_button_pressed() -> void: - network_manager.create_lobby() - get_tree().create_timer(0.5).timeout.connect( - func(): - hosted_lobby_id.text = ("Lobby hosted: " + str(network_manager.lobby_id)) - ) - - hosted_lobby_id.visible = true - - -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 user_id == network_manager.my_steam_id: - return - print(user_id, Steam.getFriendPersonaName(user_id)) - var user_box: Node = user_box_prefab.instantiate() - user_box.name = "UserBox_" + str(user_id) - users_list.add_child(user_box) - - user_box.get_node("Username").text = username - user_box.get_node("PFP").texture = get_avatar(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 - - diff --git a/assets/core/networking/old/old_test-lobby.tscn b/assets/core/networking/old/old_test-lobby.tscn deleted file mode 100644 index 62f39fc..0000000 --- a/assets/core/networking/old/old_test-lobby.tscn +++ /dev/null @@ -1,57 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://dfa8n5rw2qpfd"] - -[ext_resource type="PackedScene" uid="uid://bpmn7t87tfk7f" path="res://assets/core/networking/old/old_network_manager.tscn" id="1_i1w5w"] - -[node name="Test-lobby" type="Node"] - -[node name="NetworkManager" parent="." instance=ExtResource("1_i1w5w")] - -[node name="UiRoot" type="Control" parent="."] -layout_mode = 3 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 - -[node name="Panel" type="Panel" parent="UiRoot"] -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 - -[node name="HBoxContainer" type="HBoxContainer" parent="UiRoot/Panel"] -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 - -[node name="VBoxContainer" type="VBoxContainer" parent="UiRoot/Panel/HBoxContainer"] -layout_mode = 2 -size_flags_horizontal = 3 - -[node name="Host" type="Button" parent="UiRoot/Panel/HBoxContainer/VBoxContainer"] -layout_mode = 2 -text = "Host" - -[node name="Join" type="Button" parent="UiRoot/Panel/HBoxContainer/VBoxContainer"] -layout_mode = 2 -text = "Join" - -[node name="LobbyID" type="LineEdit" parent="UiRoot/Panel/HBoxContainer/VBoxContainer"] -layout_mode = 2 -placeholder_text = "Lobby ID" - -[node name="HostedLobbyID" type="LineEdit" parent="UiRoot/Panel/HBoxContainer/VBoxContainer"] -visible = false -layout_mode = 2 -text = "Lobby hosted: " -editable = false - -[node name="UsersList" type="VBoxContainer" parent="UiRoot/Panel/HBoxContainer"] -layout_mode = 2 -size_flags_horizontal = 3 diff --git a/assets/core/networking/old/oldnetwork_manager.gd b/assets/core/networking/old/oldnetwork_manager.gd deleted file mode 100644 index bee4d8e..0000000 --- a/assets/core/networking/old/oldnetwork_manager.gd +++ /dev/null @@ -1,164 +0,0 @@ -class_name OldnetworkManager -extends Node - -const PACKET_READ_LIMIT: int = 32 - -var my_steam_id: int -var my_username: String -var my_avatar_texture: ImageTexture - -var is_host: bool = false -var lobby_id: int = 0 -var lobby_members: Array = [] -var lobby_members_max: int = 4 -var lobby_members_avatar_cache: Dictionary = {} - -signal user_joined_lobby(steam_id: int, username: String) - -func _ready() -> void: - var init_result = Steam.steamInit(true, 480) - if init_result["status"] <= 1: - _initialize() - else: - GameConsole.log_error("Steam failed to initialize: " + str(init_result)) - - -func _initialize() -> void: - my_steam_id = Steam.getSteamID() - my_username = Steam.getFriendPersonaName(my_steam_id) - GameConsole.print_line("Steam ID: " + my_username) - - cache_avatar(my_steam_id) - - Steam.lobby_created.connect(_on_lobby_created) - Steam.lobby_joined.connect(_on_lobby_joined) - Steam.p2p_session_request.connect(_on_p2p_session_request) - - -func _process(_delta: float) -> void: - Steam.run_callbacks() - if lobby_id > 0: - read_all_p2p_packets() - - -func cache_avatar(user_id: int) -> bool: - if lobby_members_avatar_cache.has(user_id): - return true - else: - Steam.getPlayerAvatar(user_id) - - Steam.avatar_loaded.connect(func(user_id: int, avatar_size: int, avatar_buffer: PackedByteArray): - 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: - var avatar_texture = ImageTexture.create_from_image(avatar_image) - GameConsole.print_line("Avatar cached for: " + Steam.getFriendPersonaName(user_id)) - lobby_members_avatar_cache[user_id] = avatar_texture - return true - else: - GameConsole.log_error("Failed to create avatar image for: " + Steam.getFriendPersonaName(user_id)) - return false - - if user_id == my_steam_id: - my_avatar_texture = lobby_members_avatar_cache[user_id] - ) - return false - - -func _on_lobby_created(connection_status: int, this_lobby_id: int) -> void: - if connection_status == 1: - lobby_id = this_lobby_id - Steam.setLobbyJoinable(lobby_id, true) - Steam.setLobbyData(lobby_id, "host", str(my_steam_id)) - var set_relay: bool = Steam.allowP2PPacketRelay(true) - - GameConsole.print_line("Lobby created: " + str(lobby_id)) - - -func _on_lobby_joined(this_lobby_id: int, _permissions: int, _locked: bool, response: int) -> void: - if response == Steam.CHAT_ROOM_ENTER_RESPONSE_SUCCESS: - lobby_id = this_lobby_id - get_lobby_members() - make_p2p_handshake() - else: - GameConsole.log_error("Failed to join lobby: " + str(this_lobby_id) + " with response: " + str(response)) - - -func read_all_p2p_packets(read_count: int = 0) -> void: - if read_count >= PACKET_READ_LIMIT: - return - - if Steam.getAvailableP2PPacketSize(0) > 0: - read_p2p_packet() - read_all_p2p_packets(read_count + 1) - - -func _on_p2p_session_request(remote_id: int) -> void: - var this_requester: String = Steam.getFriendPersonaName(remote_id) - Steam.acceptP2PSessionWithUser(remote_id) - - -func make_p2p_handshake() -> void: - send_p2p_packet(0, {"message" : "handshake", "steam_id" : my_steam_id, "username" : my_username}) - - -func create_lobby() -> void: - if lobby_id == 0: - is_host = true - Steam.createLobby(Steam.LOBBY_TYPE_PUBLIC, lobby_members_max) - - -func join_lobby(this_lobby_id: int) -> void: - GameConsole.print_line("Joining lobby: " + str(this_lobby_id)) - Steam.joinLobby(this_lobby_id) - - -func get_lobby_members(): - lobby_members.clear() - var member_count: int = Steam.getNumLobbyMembers(lobby_id) - - for member in range(0,member_count): - 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) - - - -func send_p2p_packet(this_target: int, packet_data: Dictionary, send_type: int = 0) -> void: - var channel: int = 0 - - var this_data: PackedByteArray - this_data.append_array(var_to_bytes(packet_data)) - - if this_target == 0: - if lobby_members.size() > 1: - for member in lobby_members: - if member["steam_id"] != my_steam_id: - Steam.sendP2PPacket(member["steam_id"], this_data, send_type, channel) - else: - Steam.sendP2PPacket(this_target, this_data, send_type, channel) - - -func read_p2p_packet() -> void: - var packet_size: int = Steam.getAvailableP2PPacketSize() - - if packet_size > 0: - var this_packet: Dictionary = Steam.readP2PPacket(packet_size, 0) - var packet_sender: int = this_packet["remote_steam_id"] - var packet_code: PackedByteArray = this_packet["data"] - - var read_data: Dictionary = bytes_to_var(packet_code) - - if read_data.has("message"): - match read_data["message"]: - "handshake": - GameConsole.print_line("Handshake from: " + read_data["username"]) - get_lobby_members() - cache_avatar(read_data["steam_id"]) - "chat": - GameConsole.print_line(read_data["username"] + ": " + read_data["message"]) - _: - GameConsole.print_line("Unknown message: " + read_data["message"]) diff --git a/assets/core/networking/scripts/lobby.gd b/assets/core/networking/scripts/lobby.gd index 13399b5..bfc5d8e 100644 --- a/assets/core/networking/scripts/lobby.gd +++ b/assets/core/networking/scripts/lobby.gd @@ -9,6 +9,7 @@ extends Control var added_users = [] + func _ready() -> void: host_button.pressed.connect(_on_host) join_button.pressed.connect(_on_join) @@ -21,11 +22,11 @@ func _ready() -> void: GameConsole.register_command(Command.new("update", update, [], "Updates the lobby UI")) + func _on_host(): NetworkManager.host_lobby() - func _on_join(): NetworkManager.join_lobby(int(lobby_id_line_edit.text)) @@ -44,7 +45,7 @@ func _on_lobby_created(lobby_id: int): join_button.disabled = true leave_button.disabled = false lobby_id_line_edit.editable = false - + func _on_lobby_joined(lobby_id: int): host_button.disabled = true @@ -52,13 +53,15 @@ func _on_lobby_joined(lobby_id: int): leave_button.disabled = false lobby_id_line_edit.editable = false + func _on_user_joined_lobby(user_id: int): if user_id in added_users: return # User already added, skip - + added_users.append(user_id) update() + func _on_user_left_lobby(user_id: int): added_users.erase(user_id) update()