diff --git a/components/Scenes/FullscreenPanels/Starter.tscn b/components/Scenes/FullscreenPanels/Starter.tscn index 9698d6e..e7a0682 100644 --- a/components/Scenes/FullscreenPanels/Starter.tscn +++ b/components/Scenes/FullscreenPanels/Starter.tscn @@ -88,9 +88,10 @@ label_settings = SubResource("LabelSettings_lfxcn") [node name="connectionState" type="Label" parent="content/wrapper/starter/multiplayer/main" index="1"] unique_name_in_owner = true +modulate = Color(1, 0, 0, 1) layout_mode = 2 size_flags_horizontal = 4 -text = "状态:" +text = "状态:未连接到服务器。" label_settings = SubResource("LabelSettings_kl3ko") [node name="host" type="HBoxContainer" parent="content/wrapper/starter/multiplayer/main" index="2"] @@ -145,6 +146,13 @@ layout_mode = 2 size_flags_horizontal = 4 text = "连接服务器" +[node name="disconnectBtn" type="Button" parent="content/wrapper/starter/multiplayer/main/operation" index="2"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +disabled = true +text = "断开连接" + [node name="serverConfig" type="VBoxContainer" parent="content/wrapper/starter/multiplayer" index="1"] layout_mode = 2 alignment = 1 diff --git a/scripts/Contents/Panels/Starter.gd b/scripts/Contents/Panels/Starter.gd index 5d37c69..9c5b74c 100644 --- a/scripts/Contents/Panels/Starter.gd +++ b/scripts/Contents/Panels/Starter.gd @@ -10,6 +10,7 @@ extends FullscreenPanelBase @onready var connectBtn: Button = $"%connectBtn" @onready var maxPlayerInput: LineEdit = $"%maxPlayerInput" @onready var connectionState: Label = $"%connectionState" +@onready var disconnectBtn: Button = $"%disconnectBtn" func _ready(): diffEdit.min_value = GameRule.difficultyRange.x @@ -36,3 +37,4 @@ func setState(state: MultiplayerState.ConnectionState): MultiplayerState.state = state connectionState.text = "状态:%s" % MultiplayerState.stateTextMap[state] connectionState.modulate = MultiplayerState.stateColorMap[state] + disconnectBtn.disabled = not MultiplayerState.isConnected() diff --git a/scripts/Tools/Managers/MultiplayerState.gd b/scripts/Tools/Managers/MultiplayerState.gd index 69c4090..79ecda5 100644 --- a/scripts/Tools/Managers/MultiplayerState.gd +++ b/scripts/Tools/Managers/MultiplayerState.gd @@ -25,8 +25,15 @@ static var isMultiplayer: bool = false static var maxPlayer: int = 10 +static func isConnected(): + return [ConnectionState.CONNECTED_HOST, ConnectionState.CONNECTED_CLIENT].has(state) static func launchServer(port: int): - isMultiplayer = true var peer = ENetMultiplayerPeer.new() peer.create_server(port, maxPlayer) + state = ConnectionState.CONNECTED_HOST + return peer +static func connectClient(host: String, port: int): + var peer = ENetMultiplayerPeer.new() + peer.create_client(host, port) + state = ConnectionState.CONNECTED_CLIENT return peer