mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-05-28 06:51:54 +08:00
feat(多人游戏): 添加玩家列表管理功能
- 实现玩家加入时自动添加到列表 - 添加玩家名称修改同步功能 - 重构UI结构以支持玩家列表显示
This commit is contained in:
@@ -176,31 +176,31 @@ size_flags_horizontal = 4
|
||||
disabled = true
|
||||
text = "断开连接"
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="content/wrapper/starter/multiplayer" index="1"]
|
||||
[node name="configs" type="HBoxContainer" parent="content/wrapper/starter/multiplayer" index="1"]
|
||||
layout_mode = 2
|
||||
theme_override_constants/separation = 30
|
||||
alignment = 1
|
||||
|
||||
[node name="serverConfig" type="VBoxContainer" parent="content/wrapper/starter/multiplayer/HBoxContainer" index="0"]
|
||||
[node name="serverConfig" type="VBoxContainer" parent="content/wrapper/starter/multiplayer/configs" index="0"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
|
||||
[node name="title" type="Label" parent="content/wrapper/starter/multiplayer/HBoxContainer/serverConfig" index="0"]
|
||||
[node name="title" type="Label" parent="content/wrapper/starter/multiplayer/configs/serverConfig" index="0"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
text = "服务器配置"
|
||||
|
||||
[node name="maxPlayer" type="HBoxContainer" parent="content/wrapper/starter/multiplayer/HBoxContainer/serverConfig" index="1"]
|
||||
[node name="maxPlayer" type="HBoxContainer" parent="content/wrapper/starter/multiplayer/configs/serverConfig" index="1"]
|
||||
layout_mode = 2
|
||||
alignment = 1
|
||||
|
||||
[node name="title" type="Label" parent="content/wrapper/starter/multiplayer/HBoxContainer/serverConfig/maxPlayer" index="0"]
|
||||
[node name="title" type="Label" parent="content/wrapper/starter/multiplayer/configs/serverConfig/maxPlayer" index="0"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
text = "最大玩家数"
|
||||
label_settings = SubResource("LabelSettings_i7qv0")
|
||||
|
||||
[node name="maxPlayerInput" type="LineEdit" parent="content/wrapper/starter/multiplayer/HBoxContainer/serverConfig/maxPlayer" index="1"]
|
||||
[node name="maxPlayerInput" type="LineEdit" parent="content/wrapper/starter/multiplayer/configs/serverConfig/maxPlayer" index="1"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
@@ -211,25 +211,15 @@ emoji_menu_enabled = false
|
||||
virtual_keyboard_type = 2
|
||||
select_all_on_focus = true
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="content/wrapper/starter/multiplayer/HBoxContainer" index="1"]
|
||||
[node name="players" type="VBoxContainer" parent="content/wrapper/starter/multiplayer/configs" index="1"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="content/wrapper/starter/multiplayer/HBoxContainer/VBoxContainer" index="0"]
|
||||
[node name="title" type="Label" parent="content/wrapper/starter/multiplayer/configs/players" index="0"]
|
||||
layout_mode = 2
|
||||
text = "玩家名"
|
||||
size_flags_horizontal = 4
|
||||
text = "玩家管理"
|
||||
|
||||
[node name="Label2" type="Label" parent="content/wrapper/starter/multiplayer/HBoxContainer/VBoxContainer" index="1"]
|
||||
[node name="list" type="VBoxContainer" parent="content/wrapper/starter/multiplayer/configs/players" index="1"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "玩家名"
|
||||
|
||||
[node name="Label3" type="Label" parent="content/wrapper/starter/multiplayer/HBoxContainer/VBoxContainer" index="2"]
|
||||
layout_mode = 2
|
||||
text = "玩家名"
|
||||
|
||||
[node name="Label4" type="Label" parent="content/wrapper/starter/multiplayer/HBoxContainer/VBoxContainer" index="3"]
|
||||
layout_mode = 2
|
||||
text = "玩家名"
|
||||
|
||||
[node name="Label5" type="Label" parent="content/wrapper/starter/multiplayer/HBoxContainer/VBoxContainer" index="4"]
|
||||
layout_mode = 2
|
||||
text = "玩家名"
|
||||
alignment = 1
|
||||
|
||||
@@ -14,6 +14,16 @@ extends FullscreenPanelBase
|
||||
@onready var disconnectBtn: Button = $"%disconnectBtn"
|
||||
@onready var playerNameInput: LineEdit = $"%playerNameInput"
|
||||
@onready var serverConfig: VBoxContainer = $"%serverConfig"
|
||||
@onready var playersList: VBoxContainer = $"%list"
|
||||
|
||||
@rpc("any_peer")
|
||||
func joinPlayer(player: String):
|
||||
playersList.add_child(QuickUI.graySmallText(player))
|
||||
@rpc("any_peer")
|
||||
func setPlayerName(oldName: String, newName: String):
|
||||
for i in playersList.get_children():
|
||||
if i.text == oldName:
|
||||
i.text = newName
|
||||
|
||||
func _ready():
|
||||
diffEdit.min_value = GameRule.difficultyRange.x
|
||||
@@ -22,8 +32,9 @@ func _ready():
|
||||
func():
|
||||
setState(MultiplayerState.ConnectionState.DISCONNECTED)
|
||||
)
|
||||
multiplayer.peer_connected.connect(
|
||||
multiplayer.connected_to_server.connect(
|
||||
func():
|
||||
joinPlayer.rpc(playerNameInput.text)
|
||||
setState(MultiplayerState.ConnectionState.CONNECTED_CLIENT)
|
||||
)
|
||||
startBtn.pressed.connect(
|
||||
@@ -42,7 +53,7 @@ func _ready():
|
||||
)
|
||||
launchBtn.pressed.connect(
|
||||
func():
|
||||
MultiplayerState.launchServer(int(portInput.text))
|
||||
multiplayer.multiplayer_peer = MultiplayerState.launchServer(int(portInput.text))
|
||||
setState(MultiplayerState.ConnectionState.CONNECTED_HOST)
|
||||
)
|
||||
connectBtn.pressed.connect(
|
||||
@@ -54,6 +65,10 @@ func _ready():
|
||||
func():
|
||||
setState(MultiplayerState.ConnectionState.DISCONNECTED)
|
||||
)
|
||||
playerNameInput.text_changed.connect(
|
||||
func(text):
|
||||
setPlayerName.rpc(playerNameInput.text, text)
|
||||
)
|
||||
setState(MultiplayerState.ConnectionState.DISCONNECTED)
|
||||
func _physics_process(_delta):
|
||||
levelShow.text = "%d ∈ [%d, %d]" % [diffEdit.value, diffEdit.min_value, diffEdit.max_value]
|
||||
|
||||
Reference in New Issue
Block a user