mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-06-23 12:02:30 +08:00
fix(多人游戏): 修复玩家名称冲突问题并重构加入逻辑
将玩家加入逻辑拆分为两个函数,joinPlayer处理玩家加入,mutexPlayer处理名称冲突检测。当检测到重复名称时自动生成唯一名称。同时确保名称变更后再次检查冲突。
This commit is contained in:
@@ -18,15 +18,19 @@ var historyStack
|
||||
@onready var players: VBoxContainer = $"%players"
|
||||
@onready var playersList: VBoxContainer = $"%list"
|
||||
|
||||
@rpc("any_peer")
|
||||
func mutexPlayer(player: String):
|
||||
if multiplayer.is_server():
|
||||
if getPlayerNames().count(player) > 1:
|
||||
var newName = player + str(randi_range(1000, 99999999999))
|
||||
setPlayerName.rpc(player, newName)
|
||||
setPlayerName(player, newName)
|
||||
@rpc("any_peer")
|
||||
func joinPlayer(player: String):
|
||||
if multiplayer.is_server():
|
||||
addPlayerName(player)
|
||||
rebuildAllPlayers.rpc(getPlayerNames())
|
||||
if getPlayerNames().has(player):
|
||||
var newName = player + str(randi_range(1000, 99999999999))
|
||||
setPlayerName.rpc(player, newName)
|
||||
setPlayerName(player, newName)
|
||||
mutexPlayer(player)
|
||||
@rpc("any_peer")
|
||||
func leavePlayer(playerName: String):
|
||||
if multiplayer.is_server():
|
||||
@@ -96,6 +100,7 @@ func _ready():
|
||||
func(newText):
|
||||
setPlayerName.rpc(getLast.call(1), newText)
|
||||
setPlayerName(getLast.call(1), newText)
|
||||
mutexPlayer.rpc(newText)
|
||||
)
|
||||
setState(MultiplayerState.ConnectionState.DISCONNECTED)
|
||||
func _physics_process(_delta):
|
||||
|
||||
Reference in New Issue
Block a user