1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-05-30 16:01:53 +08:00

feat(多人游戏): 添加玩家列表管理功能

- 实现玩家加入时自动添加到列表
- 添加玩家名称修改同步功能
- 重构UI结构以支持玩家列表显示
This commit is contained in:
2025-11-09 17:29:57 +08:00
parent 79bc956b71
commit 9e78e01f08
2 changed files with 30 additions and 25 deletions
+17 -2
View File
@@ -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]