- 添加 SocketIOClient.gd 实现 Socket.IO 协议封装 - 添加 WebSocketManager.gd 管理连接生命周期和自动重连 - 添加 ChatManager.gd 实现聊天业务逻辑与会话管理 - 支持当前会话缓存(最多 100 条消息) - 支持历史消息按需加载(每次 100 条) - 每次登录/重连自动重置会话缓存 - 客户端频率限制(10 条/分钟) - Token 管理与认证 - 添加 ChatMessage.gd/tscn 消息气泡 UI 组件 - 添加 ChatUI.gd/tscn 聊天界面 - 在 EventNames.gd 添加 7 个聊天事件常量 - 在 AuthManager.gd 添加 game_token 管理方法 - 添加完整的单元测试(128 个测试用例) - test_socketio_client.gd (42 个测试) - test_websocket_manager.gd (38 个测试) - test_chat_manager.gd (48 个测试) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
46 lines
1.3 KiB
Plaintext
46 lines
1.3 KiB
Plaintext
[gd_scene load_steps=2 format=3 uid="uid://dqx8k3n8yqjvu"]
|
|
|
|
[ext_resource type="Script" path="res://scenes/prefabs/ui/ChatMessage.gd" id="1"]
|
|
|
|
[node name="ChatMessage" type="Panel"]
|
|
offset_right = 400.0
|
|
offset_bottom = 100.0
|
|
size_flags_horizontal = 3
|
|
script = ExtResource("1")
|
|
|
|
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
|
layout_mode = 1
|
|
anchors_preset = 15
|
|
anchor_right = 1.0
|
|
anchor_bottom = 1.0
|
|
grow_horizontal = 2
|
|
grow_vertical = 2
|
|
theme_override_constants/separation = 4
|
|
|
|
[node name="UserInfoContainer" type="HBoxContainer" parent="VBoxContainer"]
|
|
unique_name_in_owner = true
|
|
layout_mode = 2
|
|
theme_override_constants/separation = 8
|
|
|
|
[node name="UsernameLabel" type="Label" parent="VBoxContainer/UserInfoContainer"]
|
|
unique_name_in_owner = true
|
|
layout_mode = 2
|
|
theme_override_colors/font_color = Color(0.2, 0.4, 0.8, 1)
|
|
theme_override_font_sizes/font_size = 14
|
|
text = "Username"
|
|
|
|
[node name="TimestampLabel" type="Label" parent="VBoxContainer/UserInfoContainer"]
|
|
unique_name_in_owner = true
|
|
layout_mode = 2
|
|
theme_override_colors/font_color = Color(0.5, 0.5, 0.5, 1)
|
|
theme_override_font_sizes/font_size = 12
|
|
text = "12:34"
|
|
|
|
[node name="ContentLabel" type="RichTextLabel" parent="VBoxContainer"]
|
|
unique_name_in_owner = true
|
|
layout_mode = 2
|
|
size_flags_vertical = 3
|
|
bbcode_enabled = true
|
|
text = "Message content here"
|
|
fit_content = true
|