chat messages are now sent and relayed. server: handling host client leaving correctly

This commit is contained in:
2025-07-04 11:29:25 +02:00
parent f4a7fb722e
commit 4b4285ca99
5 changed files with 116 additions and 25 deletions
+58 -21
View File
@@ -12,7 +12,7 @@ font_weight = 500
[node name="WebClientTCP" type="Node" parent="."]
script = ExtResource("1_feb5d")
[node name="ClientInterface" type="ColorRect" parent="." node_paths=PackedStringArray("client", "connect_button", "create_lobby_button", "join_lobby_button", "leave_lobby_button", "name_input", "lobby_code_input", "output")]
[node name="ClientInterface" type="ColorRect" parent="." node_paths=PackedStringArray("client", "connect_button", "create_lobby_button", "join_lobby_button", "leave_lobby_button", "chat_message_input", "send_chat_message_button", "name_input", "lobby_code_input", "output")]
anchors_preset = 9
anchor_bottom = 1.0
offset_right = 362.0
@@ -20,62 +20,97 @@ grow_vertical = 2
color = Color(0.26, 0.2236, 0.230273, 1)
script = ExtResource("2_e2o6t")
client = NodePath("../WebClientTCP")
connect_button = NodePath("VBoxContainer/VBoxContainer/ConnectButton")
create_lobby_button = NodePath("VBoxContainer/VBoxContainer/CreateLobbyButton")
join_lobby_button = NodePath("VBoxContainer/VBoxContainer/JoinLobbyButton")
leave_lobby_button = NodePath("VBoxContainer/VBoxContainer/LeaveLobbyButton")
name_input = NodePath("VBoxContainer/VBoxContainer/NameInput")
lobby_code_input = NodePath("VBoxContainer/VBoxContainer/LobbyCodeInput")
output = NodePath("VBoxContainer/Output")
connect_button = NodePath("MarginContainer/VBoxContainer/VBoxContainer/ConnectButton")
create_lobby_button = NodePath("MarginContainer/VBoxContainer/VBoxContainer/CreateLobbyButton")
join_lobby_button = NodePath("MarginContainer/VBoxContainer/VBoxContainer/JoinLobbyButton")
leave_lobby_button = NodePath("MarginContainer/VBoxContainer/VBoxContainer/LeaveLobbyButton")
chat_message_input = NodePath("MarginContainer/VBoxContainer/ChatContainer/MessageInput")
send_chat_message_button = NodePath("MarginContainer/VBoxContainer/ChatContainer/SendMessageButton")
name_input = NodePath("MarginContainer/VBoxContainer/VBoxContainer/NameInput")
lobby_code_input = NodePath("MarginContainer/VBoxContainer/VBoxContainer/LobbyCodeInput")
output = NodePath("MarginContainer/VBoxContainer/ScrollContainer/Output")
[node name="VBoxContainer" type="VBoxContainer" parent="ClientInterface"]
[node name="MarginContainer" type="MarginContainer" parent="ClientInterface"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/margin_left = 8
theme_override_constants/margin_top = 8
theme_override_constants/margin_right = 8
theme_override_constants/margin_bottom = 8
[node name="VBoxContainer" type="VBoxContainer" parent="ClientInterface/VBoxContainer"]
[node name="VBoxContainer" type="VBoxContainer" parent="ClientInterface/MarginContainer"]
layout_mode = 2
[node name="Label" type="RichTextLabel" parent="ClientInterface/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_font_sizes/italics_font_size = 24
theme_override_font_sizes/normal_font_size = 24
bbcode_enabled = true
text = "[i]Magician Online![/i]"
fit_content = true
[node name="VBoxContainer" type="VBoxContainer" parent="ClientInterface/MarginContainer/VBoxContainer"]
custom_minimum_size = Vector2(300, 0)
layout_mode = 2
[node name="ConnectButton" type="Button" parent="ClientInterface/VBoxContainer/VBoxContainer"]
[node name="ConnectButton" type="Button" parent="ClientInterface/MarginContainer/VBoxContainer/VBoxContainer"]
layout_mode = 2
text = "Connect to Server"
[node name="NameInput" type="LineEdit" parent="ClientInterface/VBoxContainer/VBoxContainer"]
[node name="NameInput" type="LineEdit" parent="ClientInterface/MarginContainer/VBoxContainer/VBoxContainer"]
layout_mode = 2
placeholder_text = "Your Name"
editable = false
[node name="CreateLobbyButton" type="Button" parent="ClientInterface/VBoxContainer/VBoxContainer"]
[node name="CreateLobbyButton" type="Button" parent="ClientInterface/MarginContainer/VBoxContainer/VBoxContainer"]
layout_mode = 2
disabled = true
text = "Create Lobby"
[node name="LobbyCodeInput" type="LineEdit" parent="ClientInterface/VBoxContainer/VBoxContainer"]
[node name="LobbyCodeInput" type="LineEdit" parent="ClientInterface/MarginContainer/VBoxContainer/VBoxContainer"]
layout_mode = 2
placeholder_text = "Lobby Code"
editable = false
[node name="JoinLobbyButton" type="Button" parent="ClientInterface/VBoxContainer/VBoxContainer"]
[node name="JoinLobbyButton" type="Button" parent="ClientInterface/MarginContainer/VBoxContainer/VBoxContainer"]
layout_mode = 2
disabled = true
text = "Join Lobby"
[node name="LeaveLobbyButton" type="Button" parent="ClientInterface/VBoxContainer/VBoxContainer"]
[node name="LeaveLobbyButton" type="Button" parent="ClientInterface/MarginContainer/VBoxContainer/VBoxContainer"]
layout_mode = 2
disabled = true
text = "Disconnect"
[node name="Output" type="Label" parent="ClientInterface/VBoxContainer"]
[node name="ScrollContainer" type="ScrollContainer" parent="ClientInterface/MarginContainer/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
horizontal_scroll_mode = 0
vertical_scroll_mode = 4
[node name="Output" type="Label" parent="ClientInterface/MarginContainer/VBoxContainer/ScrollContainer"]
custom_minimum_size = Vector2(64, 1)
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 1
theme_override_fonts/font = SubResource("SystemFont_80nbo")
autowrap_mode = 2
metadata/_edit_lock_ = true
[node name="ChatContainer" type="HBoxContainer" parent="ClientInterface/MarginContainer/VBoxContainer"]
layout_mode = 2
[node name="MessageInput" type="LineEdit" parent="ClientInterface/MarginContainer/VBoxContainer/ChatContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="SendMessageButton" type="Button" parent="ClientInterface/MarginContainer/VBoxContainer/ChatContainer"]
layout_mode = 2
text = "Send"
[connection signal="client_joined_lobby" from="WebClientTCP" to="ClientInterface" method="_on_web_client_tcp_client_joined_lobby"]
[connection signal="connected_to_lobby" from="WebClientTCP" to="ClientInterface" method="_on_web_client_tcp_connected_to_lobby"]
@@ -84,7 +119,9 @@ autowrap_mode = 2
[connection signal="connection_status_changed" from="WebClientTCP" to="ClientInterface" method="_on_web_client_tcp_connection_status_changed"]
[connection signal="disconnected_from_lobby" from="WebClientTCP" to="ClientInterface" method="_on_web_client_tcp_disconnected_from_lobby"]
[connection signal="disconnected_from_server" from="WebClientTCP" to="ClientInterface" method="_on_web_client_tcp_disconnected_from_server"]
[connection signal="pressed" from="ClientInterface/VBoxContainer/VBoxContainer/ConnectButton" to="ClientInterface" method="_on_connect_button_pressed"]
[connection signal="pressed" from="ClientInterface/VBoxContainer/VBoxContainer/CreateLobbyButton" to="ClientInterface" method="_on_create_lobby_button_pressed"]
[connection signal="pressed" from="ClientInterface/VBoxContainer/VBoxContainer/JoinLobbyButton" to="ClientInterface" method="_on_join_lobby_button_pressed"]
[connection signal="pressed" from="ClientInterface/VBoxContainer/VBoxContainer/LeaveLobbyButton" to="ClientInterface" method="_on_disconnect_lobby_button_pressed"]
[connection signal="received_chat_message" from="WebClientTCP" to="ClientInterface" method="_on_web_client_tcp_received_chat_message"]
[connection signal="pressed" from="ClientInterface/MarginContainer/VBoxContainer/VBoxContainer/ConnectButton" to="ClientInterface" method="_on_connect_button_pressed"]
[connection signal="pressed" from="ClientInterface/MarginContainer/VBoxContainer/VBoxContainer/CreateLobbyButton" to="ClientInterface" method="_on_create_lobby_button_pressed"]
[connection signal="pressed" from="ClientInterface/MarginContainer/VBoxContainer/VBoxContainer/JoinLobbyButton" to="ClientInterface" method="_on_join_lobby_button_pressed"]
[connection signal="pressed" from="ClientInterface/MarginContainer/VBoxContainer/VBoxContainer/LeaveLobbyButton" to="ClientInterface" method="_on_disconnect_lobby_button_pressed"]
[connection signal="pressed" from="ClientInterface/MarginContainer/VBoxContainer/ChatContainer/SendMessageButton" to="ClientInterface" method="_on_send_message_button_pressed"]