diff --git a/components/Scenes/FullscreenPanels/Starter.tscn b/components/Scenes/FullscreenPanels/Starter.tscn index cfae34b..6d21c9d 100644 --- a/components/Scenes/FullscreenPanels/Starter.tscn +++ b/components/Scenes/FullscreenPanels/Starter.tscn @@ -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 diff --git a/scripts/Contents/Panels/Starter.gd b/scripts/Contents/Panels/Starter.gd index d42b0e1..4b04b7e 100644 --- a/scripts/Contents/Panels/Starter.gd +++ b/scripts/Contents/Panels/Starter.gd @@ -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]