parent
c8cfd73005
commit
f1ed9ef6fd
5 changed files with 418 additions and 96 deletions
@ -0,0 +1,128 @@ |
|||||||
|
public partial class MultiplayerMenu : MarginContainer |
||||||
|
{ |
||||||
|
enum Status |
||||||
|
{ |
||||||
|
Disconnected, |
||||||
|
ConnectionFailed, |
||||||
|
HostingFailed, |
||||||
|
Connecting, |
||||||
|
Connected, |
||||||
|
Hosting, |
||||||
|
} |
||||||
|
|
||||||
|
Status _status = Status.Disconnected; |
||||||
|
|
||||||
|
[Export] public Label StatusLabel { get; set; } |
||||||
|
|
||||||
|
[ExportGroup("When Disconnected")] |
||||||
|
[Export] public Container WhenDisconnected { get; set; } |
||||||
|
[Export] public LineEdit AddressInput { get; set; } |
||||||
|
[Export] public SpinBox PortInput { get; set; } |
||||||
|
[Export] public Button ConnectButton { get; set; } |
||||||
|
[Export] public Button HostButton { get; set; } |
||||||
|
|
||||||
|
[ExportGroup("When Server")] |
||||||
|
[Export] public Container WhenServer { get; set; } |
||||||
|
[Export] public LineEdit PortDisplay { get; set; } |
||||||
|
|
||||||
|
[ExportGroup("When Connected")] |
||||||
|
[Export] public Container WhenConnected { get; set; } |
||||||
|
[Export] public Label PlayersLabel { get; set; } |
||||||
|
[Export] public Button DisconnectButton { get; set; } |
||||||
|
|
||||||
|
public override void _Ready() |
||||||
|
{ |
||||||
|
PortDisplay.AddThemeColorOverride("font_uneditable_color", PortDisplay.GetThemeColor("font_color")); |
||||||
|
|
||||||
|
Multiplayer.ConnectedToServer += () => UpdateStatus(Status.Connected); |
||||||
|
Multiplayer.ConnectionFailed += () => UpdateStatus(Status.ConnectionFailed); |
||||||
|
Multiplayer.ServerDisconnected += () => UpdateStatus(Status.Disconnected); |
||||||
|
|
||||||
|
Multiplayer.PeerConnected += (_) => UpdatePlayerCount(); |
||||||
|
Multiplayer.PeerDisconnected += (_) => UpdatePlayerCount(); |
||||||
|
} |
||||||
|
|
||||||
|
void UpdateStatus(Status status) |
||||||
|
{ |
||||||
|
_status = status; |
||||||
|
|
||||||
|
StatusLabel.Text = status switch { |
||||||
|
Status.Disconnected => "Disconnected", |
||||||
|
Status.ConnectionFailed => "Connection failed!", |
||||||
|
Status.HostingFailed => "Hosting failed!", |
||||||
|
Status.Connecting => "Connecting ...", |
||||||
|
Status.Connected => "Connected", |
||||||
|
Status.Hosting => "Hosting", |
||||||
|
_ => throw new InvalidOperationException(), |
||||||
|
}; |
||||||
|
StatusLabel.LabelSettings.FontColor = (status switch { |
||||||
|
Status.Disconnected => Colors.DarkGray, |
||||||
|
Status.ConnectionFailed => Colors.Red, |
||||||
|
Status.HostingFailed => Colors.Red, |
||||||
|
Status.Connecting => Colors.Yellow, |
||||||
|
Status.Connected => Colors.Green, |
||||||
|
Status.Hosting => Colors.Green, |
||||||
|
_ => throw new InvalidOperationException(), |
||||||
|
}).Lerp(StatusLabel.GetThemeColor("font_color"), 0.5f); |
||||||
|
|
||||||
|
WhenDisconnected.Visible = status < Status.Connecting; |
||||||
|
WhenServer.Visible = status == Status.Hosting; |
||||||
|
WhenConnected.Visible = status >= Status.Connecting; |
||||||
|
DisconnectButton.Text = status == Status.Hosting ? "Close Server" : "Disconnect"; |
||||||
|
|
||||||
|
UpdatePlayerCount(); |
||||||
|
} |
||||||
|
|
||||||
|
void UpdatePlayerCount() |
||||||
|
{ |
||||||
|
PlayersLabel.Text = _status switch { |
||||||
|
< Status.Connecting => "Singleplayer", |
||||||
|
Status.Connecting => "??? Players", |
||||||
|
> Status.Connecting => ((Func<string>)(() => { |
||||||
|
var players = Multiplayer.GetPeers().Length + 1; |
||||||
|
return $"{players} {(players != 1 ? "Players" : "Player")}"; |
||||||
|
}))(), |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
public void OnShowAddressToggled(bool toggledOn) |
||||||
|
{ |
||||||
|
AddressInput.Secret = !toggledOn; |
||||||
|
AddressInput.VirtualKeyboardType = toggledOn |
||||||
|
? LineEdit.VirtualKeyboardTypeEnum.Default |
||||||
|
: LineEdit.VirtualKeyboardTypeEnum.Password; |
||||||
|
} |
||||||
|
|
||||||
|
public void OnConnectPressed() |
||||||
|
{ |
||||||
|
var address = AddressInput.Text; |
||||||
|
if (address == "") address = AddressInput.PlaceholderText; |
||||||
|
var port = RoundToInt(PortInput.Value); |
||||||
|
|
||||||
|
var peer = new ENetMultiplayerPeer(); |
||||||
|
peer.CreateClient(address, port); |
||||||
|
Multiplayer.MultiplayerPeer = peer; |
||||||
|
UpdateStatus(Status.Connecting); |
||||||
|
} |
||||||
|
|
||||||
|
public void OnHostPressed() |
||||||
|
{ |
||||||
|
var port = RoundToInt(PortInput.Value); |
||||||
|
PortDisplay.Text = port.ToString(); |
||||||
|
|
||||||
|
var peer = new ENetMultiplayerPeer(); |
||||||
|
if (peer.CreateServer(port) == Error.Ok) { |
||||||
|
Multiplayer.MultiplayerPeer = peer; |
||||||
|
UpdateStatus(Status.Hosting); |
||||||
|
} else { |
||||||
|
UpdateStatus(Status.HostingFailed); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public void OnDisconnectPressed() |
||||||
|
{ |
||||||
|
Multiplayer.MultiplayerPeer.Close(); |
||||||
|
Multiplayer.MultiplayerPeer = null; |
||||||
|
UpdateStatus(Status.Disconnected); |
||||||
|
} |
||||||
|
} |
@ -1,92 +0,0 @@ |
|||||||
[gd_scene load_steps=3 format=3 uid="uid://c5ooi36ibspfo"] |
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://EscapeMenu.cs" id="1_5qxrt"] |
|
||||||
|
|
||||||
[sub_resource type="LabelSettings" id="LabelSettings_u8eqm"] |
|
||||||
font_size = 22 |
|
||||||
|
|
||||||
[node name="EscapeMenu" type="CenterContainer" node_paths=PackedStringArray("SideButtons", "Tabs")] |
|
||||||
offset_right = 562.0 |
|
||||||
offset_bottom = 404.0 |
|
||||||
mouse_filter = 0 |
|
||||||
script = ExtResource("1_5qxrt") |
|
||||||
SideButtons = NodePath("PanelContainer/MarginContainer/VBoxContainer/GridContainer/SideButtons") |
|
||||||
Tabs = NodePath("PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer") |
|
||||||
|
|
||||||
[node name="PanelContainer" type="PanelContainer" parent="."] |
|
||||||
layout_mode = 2 |
|
||||||
|
|
||||||
[node name="MarginContainer" type="MarginContainer" parent="PanelContainer"] |
|
||||||
layout_mode = 2 |
|
||||||
theme_override_constants/margin_left = 10 |
|
||||||
theme_override_constants/margin_top = 4 |
|
||||||
theme_override_constants/margin_right = 10 |
|
||||||
theme_override_constants/margin_bottom = 10 |
|
||||||
|
|
||||||
[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/MarginContainer"] |
|
||||||
layout_mode = 2 |
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer"] |
|
||||||
layout_mode = 2 |
|
||||||
text = "Escape Menu" |
|
||||||
label_settings = SubResource("LabelSettings_u8eqm") |
|
||||||
horizontal_alignment = 1 |
|
||||||
|
|
||||||
[node name="GridContainer" type="GridContainer" parent="PanelContainer/MarginContainer/VBoxContainer"] |
|
||||||
layout_mode = 2 |
|
||||||
theme_override_constants/h_separation = 6 |
|
||||||
theme_override_constants/v_separation = 6 |
|
||||||
columns = 2 |
|
||||||
|
|
||||||
[node name="SideButtons" type="VBoxContainer" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer"] |
|
||||||
custom_minimum_size = Vector2(160, 0) |
|
||||||
layout_mode = 2 |
|
||||||
|
|
||||||
[node name="Gameplay" type="Button" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/SideButtons"] |
|
||||||
layout_mode = 2 |
|
||||||
toggle_mode = true |
|
||||||
button_pressed = true |
|
||||||
text = "Gameplay" |
|
||||||
|
|
||||||
[node name="Multiplayer" type="Button" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/SideButtons"] |
|
||||||
layout_mode = 2 |
|
||||||
toggle_mode = true |
|
||||||
text = "Multiplayer" |
|
||||||
|
|
||||||
[node name="TabContainer" type="TabContainer" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer"] |
|
||||||
custom_minimum_size = Vector2(400, 300) |
|
||||||
layout_mode = 2 |
|
||||||
size_flags_vertical = 3 |
|
||||||
tabs_visible = false |
|
||||||
|
|
||||||
[node name="Gameplay" type="CenterContainer" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer"] |
|
||||||
layout_mode = 2 |
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Gameplay"] |
|
||||||
layout_mode = 2 |
|
||||||
text = "Gameplay |
|
||||||
(nothing here yet)" |
|
||||||
horizontal_alignment = 1 |
|
||||||
|
|
||||||
[node name="Multiplayer" type="CenterContainer" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer"] |
|
||||||
visible = false |
|
||||||
layout_mode = 2 |
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer"] |
|
||||||
layout_mode = 2 |
|
||||||
text = "Multiplayer |
|
||||||
(nothing here yet)" |
|
||||||
horizontal_alignment = 1 |
|
||||||
|
|
||||||
[node name="Quit" type="Button" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer"] |
|
||||||
layout_mode = 2 |
|
||||||
text = "Quit to Desktop" |
|
||||||
|
|
||||||
[node name="Return" type="Button" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer"] |
|
||||||
layout_mode = 2 |
|
||||||
text = "Return to Game |
|
||||||
" |
|
||||||
|
|
||||||
[connection signal="tab_changed" from="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer" to="." method="OnTabChanged"] |
|
||||||
[connection signal="pressed" from="PanelContainer/MarginContainer/VBoxContainer/GridContainer/Quit" to="." method="OnQuitPressed"] |
|
||||||
[connection signal="pressed" from="PanelContainer/MarginContainer/VBoxContainer/GridContainer/Return" to="." method="OnReturnPressed"] |
|
@ -0,0 +1,284 @@ |
|||||||
|
[gd_scene load_steps=8 format=3 uid="uid://c5ooi36ibspfo"] |
||||||
|
|
||||||
|
[ext_resource type="Script" path="res://Menu.cs" id="1_5qxrt"] |
||||||
|
[ext_resource type="Script" path="res://MultiplayerMenu.cs" id="2_3ulcb"] |
||||||
|
|
||||||
|
[sub_resource type="LabelSettings" id="LabelSettings_u8eqm"] |
||||||
|
font_size = 22 |
||||||
|
|
||||||
|
[sub_resource type="LabelSettings" id="LabelSettings_nmchh"] |
||||||
|
font_color = Color(0.75, 0.75, 0.75, 1) |
||||||
|
|
||||||
|
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ulror"] |
||||||
|
|
||||||
|
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_fwm45"] |
||||||
|
|
||||||
|
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_2rjy4"] |
||||||
|
|
||||||
|
[node name="Menu" type="CenterContainer" node_paths=PackedStringArray("SideButtons", "Tabs")] |
||||||
|
offset_right = 586.0 |
||||||
|
offset_bottom = 386.0 |
||||||
|
mouse_filter = 0 |
||||||
|
script = ExtResource("1_5qxrt") |
||||||
|
SideButtons = NodePath("PanelContainer/MarginContainer/VBoxContainer/GridContainer/SideButtons") |
||||||
|
Tabs = NodePath("PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer") |
||||||
|
|
||||||
|
[node name="PanelContainer" type="PanelContainer" parent="."] |
||||||
|
layout_mode = 2 |
||||||
|
|
||||||
|
[node name="MarginContainer" type="MarginContainer" parent="PanelContainer"] |
||||||
|
layout_mode = 2 |
||||||
|
theme_override_constants/margin_left = 10 |
||||||
|
theme_override_constants/margin_top = 4 |
||||||
|
theme_override_constants/margin_right = 10 |
||||||
|
theme_override_constants/margin_bottom = 10 |
||||||
|
|
||||||
|
[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/MarginContainer"] |
||||||
|
layout_mode = 2 |
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer"] |
||||||
|
layout_mode = 2 |
||||||
|
text = "Menu" |
||||||
|
label_settings = SubResource("LabelSettings_u8eqm") |
||||||
|
horizontal_alignment = 1 |
||||||
|
|
||||||
|
[node name="GridContainer" type="GridContainer" parent="PanelContainer/MarginContainer/VBoxContainer"] |
||||||
|
layout_mode = 2 |
||||||
|
theme_override_constants/h_separation = 6 |
||||||
|
theme_override_constants/v_separation = 6 |
||||||
|
columns = 2 |
||||||
|
|
||||||
|
[node name="SideButtons" type="VBoxContainer" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer"] |
||||||
|
custom_minimum_size = Vector2(160, 0) |
||||||
|
layout_mode = 2 |
||||||
|
|
||||||
|
[node name="Gameplay" type="Button" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/SideButtons"] |
||||||
|
layout_mode = 2 |
||||||
|
toggle_mode = true |
||||||
|
text = "Gameplay" |
||||||
|
|
||||||
|
[node name="Multiplayer" type="Button" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/SideButtons"] |
||||||
|
layout_mode = 2 |
||||||
|
toggle_mode = true |
||||||
|
text = "Multiplayer" |
||||||
|
|
||||||
|
[node name="Controls" type="Button" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/SideButtons"] |
||||||
|
layout_mode = 2 |
||||||
|
toggle_mode = true |
||||||
|
text = "Controls" |
||||||
|
|
||||||
|
[node name="Graphics" type="Button" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/SideButtons"] |
||||||
|
layout_mode = 2 |
||||||
|
toggle_mode = true |
||||||
|
text = "Graphics" |
||||||
|
|
||||||
|
[node name="Audio" type="Button" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/SideButtons"] |
||||||
|
layout_mode = 2 |
||||||
|
toggle_mode = true |
||||||
|
text = "Audio" |
||||||
|
|
||||||
|
[node name="TabContainer" type="TabContainer" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer"] |
||||||
|
custom_minimum_size = Vector2(400, 300) |
||||||
|
layout_mode = 2 |
||||||
|
size_flags_vertical = 3 |
||||||
|
current_tab = 1 |
||||||
|
tabs_visible = false |
||||||
|
use_hidden_tabs_for_min_size = true |
||||||
|
|
||||||
|
[node name="Gameplay" type="CenterContainer" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer"] |
||||||
|
visible = false |
||||||
|
layout_mode = 2 |
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Gameplay"] |
||||||
|
layout_mode = 2 |
||||||
|
text = "Gameplay |
||||||
|
(nothing here yet)" |
||||||
|
horizontal_alignment = 1 |
||||||
|
|
||||||
|
[node name="Multiplayer" type="MarginContainer" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer" node_paths=PackedStringArray("StatusLabel", "WhenDisconnected", "AddressInput", "PortInput", "ConnectButton", "HostButton", "WhenServer", "PortDisplay", "WhenConnected", "PlayersLabel", "DisconnectButton")] |
||||||
|
layout_mode = 2 |
||||||
|
theme_override_constants/margin_left = 8 |
||||||
|
theme_override_constants/margin_top = 8 |
||||||
|
theme_override_constants/margin_right = 8 |
||||||
|
theme_override_constants/margin_bottom = 8 |
||||||
|
script = ExtResource("2_3ulcb") |
||||||
|
StatusLabel = NodePath("VBoxContainer/HBoxContainer/Status") |
||||||
|
WhenDisconnected = NodePath("VBoxContainer/WhenDisconnected") |
||||||
|
AddressInput = NodePath("VBoxContainer/WhenDisconnected/GridContainer/Address") |
||||||
|
PortInput = NodePath("VBoxContainer/WhenDisconnected/GridContainer/Port") |
||||||
|
ConnectButton = NodePath("VBoxContainer/WhenDisconnected/HBoxContainer/Connect") |
||||||
|
HostButton = NodePath("VBoxContainer/WhenDisconnected/HBoxContainer/Host") |
||||||
|
WhenServer = NodePath("VBoxContainer/WhenServer") |
||||||
|
PortDisplay = NodePath("VBoxContainer/WhenServer/HBoxContainer/Port") |
||||||
|
WhenConnected = NodePath("VBoxContainer/WhenConnected") |
||||||
|
PlayersLabel = NodePath("VBoxContainer/WhenConnected/HBoxContainer/Players") |
||||||
|
DisconnectButton = NodePath("VBoxContainer/WhenConnected/Disconnect") |
||||||
|
|
||||||
|
[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer"] |
||||||
|
layout_mode = 2 |
||||||
|
|
||||||
|
[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer/VBoxContainer"] |
||||||
|
layout_mode = 2 |
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer/VBoxContainer/HBoxContainer"] |
||||||
|
custom_minimum_size = Vector2(80, 0) |
||||||
|
layout_mode = 2 |
||||||
|
text = "Status: " |
||||||
|
horizontal_alignment = 2 |
||||||
|
|
||||||
|
[node name="Status" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer/VBoxContainer/HBoxContainer"] |
||||||
|
layout_mode = 2 |
||||||
|
size_flags_horizontal = 3 |
||||||
|
text = "Disconnected" |
||||||
|
label_settings = SubResource("LabelSettings_nmchh") |
||||||
|
horizontal_alignment = 1 |
||||||
|
|
||||||
|
[node name="WhenDisconnected" type="VBoxContainer" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer/VBoxContainer"] |
||||||
|
layout_mode = 2 |
||||||
|
|
||||||
|
[node name="GridContainer" type="GridContainer" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer/VBoxContainer/WhenDisconnected"] |
||||||
|
layout_mode = 2 |
||||||
|
columns = 3 |
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer/VBoxContainer/WhenDisconnected/GridContainer"] |
||||||
|
layout_mode = 2 |
||||||
|
text = "Address" |
||||||
|
horizontal_alignment = 1 |
||||||
|
|
||||||
|
[node name="Control" type="Control" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer/VBoxContainer/WhenDisconnected/GridContainer"] |
||||||
|
layout_mode = 2 |
||||||
|
|
||||||
|
[node name="Label2" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer/VBoxContainer/WhenDisconnected/GridContainer"] |
||||||
|
layout_mode = 2 |
||||||
|
text = "Port" |
||||||
|
horizontal_alignment = 1 |
||||||
|
|
||||||
|
[node name="Address" type="LineEdit" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer/VBoxContainer/WhenDisconnected/GridContainer"] |
||||||
|
layout_mode = 2 |
||||||
|
size_flags_horizontal = 3 |
||||||
|
placeholder_text = "localhost" |
||||||
|
virtual_keyboard_type = 6 |
||||||
|
secret = true |
||||||
|
|
||||||
|
[node name="Label3" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer/VBoxContainer/WhenDisconnected/GridContainer"] |
||||||
|
layout_mode = 2 |
||||||
|
text = ":" |
||||||
|
|
||||||
|
[node name="Port" type="SpinBox" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer/VBoxContainer/WhenDisconnected/GridContainer"] |
||||||
|
layout_mode = 2 |
||||||
|
min_value = 1024.0 |
||||||
|
max_value = 65535.0 |
||||||
|
value = 9713.0 |
||||||
|
rounded = true |
||||||
|
alignment = 2 |
||||||
|
|
||||||
|
[node name="ShowAddress" type="CheckButton" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer/VBoxContainer/WhenDisconnected"] |
||||||
|
layout_mode = 2 |
||||||
|
text = "Show Server Address" |
||||||
|
|
||||||
|
[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer/VBoxContainer/WhenDisconnected"] |
||||||
|
layout_mode = 2 |
||||||
|
|
||||||
|
[node name="Connect" type="Button" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer/VBoxContainer/WhenDisconnected/HBoxContainer"] |
||||||
|
layout_mode = 2 |
||||||
|
size_flags_horizontal = 3 |
||||||
|
text = "Connect to Server" |
||||||
|
|
||||||
|
[node name="Host" type="Button" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer/VBoxContainer/WhenDisconnected/HBoxContainer"] |
||||||
|
layout_mode = 2 |
||||||
|
size_flags_horizontal = 3 |
||||||
|
text = "Host Server" |
||||||
|
|
||||||
|
[node name="WhenServer" type="VBoxContainer" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer/VBoxContainer"] |
||||||
|
visible = false |
||||||
|
layout_mode = 2 |
||||||
|
|
||||||
|
[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer/VBoxContainer/WhenServer"] |
||||||
|
layout_mode = 2 |
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer/VBoxContainer/WhenServer/HBoxContainer"] |
||||||
|
custom_minimum_size = Vector2(80, 0) |
||||||
|
layout_mode = 2 |
||||||
|
text = "Port: " |
||||||
|
horizontal_alignment = 2 |
||||||
|
|
||||||
|
[node name="Port" type="LineEdit" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer/VBoxContainer/WhenServer/HBoxContainer"] |
||||||
|
layout_mode = 2 |
||||||
|
size_flags_horizontal = 3 |
||||||
|
theme_override_styles/normal = SubResource("StyleBoxEmpty_ulror") |
||||||
|
theme_override_styles/focus = SubResource("StyleBoxEmpty_fwm45") |
||||||
|
theme_override_styles/read_only = SubResource("StyleBoxEmpty_2rjy4") |
||||||
|
text = "9713" |
||||||
|
alignment = 1 |
||||||
|
editable = false |
||||||
|
|
||||||
|
[node name="WhenConnected" type="VBoxContainer" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer/VBoxContainer"] |
||||||
|
visible = false |
||||||
|
layout_mode = 2 |
||||||
|
|
||||||
|
[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer/VBoxContainer/WhenConnected"] |
||||||
|
layout_mode = 2 |
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer/VBoxContainer/WhenConnected/HBoxContainer"] |
||||||
|
custom_minimum_size = Vector2(80, 0) |
||||||
|
layout_mode = 2 |
||||||
|
text = "Players: " |
||||||
|
horizontal_alignment = 2 |
||||||
|
|
||||||
|
[node name="Players" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer/VBoxContainer/WhenConnected/HBoxContainer"] |
||||||
|
layout_mode = 2 |
||||||
|
size_flags_horizontal = 3 |
||||||
|
text = "Singleplayer" |
||||||
|
horizontal_alignment = 1 |
||||||
|
|
||||||
|
[node name="Disconnect" type="Button" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer/VBoxContainer/WhenConnected"] |
||||||
|
layout_mode = 2 |
||||||
|
size_flags_horizontal = 3 |
||||||
|
text = "Disconnect" |
||||||
|
|
||||||
|
[node name="Controls" type="CenterContainer" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer"] |
||||||
|
visible = false |
||||||
|
layout_mode = 2 |
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Controls"] |
||||||
|
layout_mode = 2 |
||||||
|
text = "Controls |
||||||
|
(nothing here yet)" |
||||||
|
horizontal_alignment = 1 |
||||||
|
|
||||||
|
[node name="Graphics" type="CenterContainer" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer"] |
||||||
|
visible = false |
||||||
|
layout_mode = 2 |
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Graphics"] |
||||||
|
layout_mode = 2 |
||||||
|
text = "Graphics |
||||||
|
(nothing here yet)" |
||||||
|
horizontal_alignment = 1 |
||||||
|
|
||||||
|
[node name="Audio" type="CenterContainer" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer"] |
||||||
|
visible = false |
||||||
|
layout_mode = 2 |
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Audio"] |
||||||
|
layout_mode = 2 |
||||||
|
text = "Audio |
||||||
|
(nothing here yet)" |
||||||
|
horizontal_alignment = 1 |
||||||
|
|
||||||
|
[node name="Quit" type="Button" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer"] |
||||||
|
layout_mode = 2 |
||||||
|
text = "Quit to Desktop" |
||||||
|
|
||||||
|
[node name="Return" type="Button" parent="PanelContainer/MarginContainer/VBoxContainer/GridContainer"] |
||||||
|
layout_mode = 2 |
||||||
|
text = "Return to Game |
||||||
|
" |
||||||
|
|
||||||
|
[connection signal="tab_changed" from="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer" to="." method="OnTabChanged"] |
||||||
|
[connection signal="toggled" from="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer/VBoxContainer/WhenDisconnected/ShowAddress" to="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer" method="OnShowAddressToggled"] |
||||||
|
[connection signal="pressed" from="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer/VBoxContainer/WhenDisconnected/HBoxContainer/Connect" to="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer" method="OnConnectPressed"] |
||||||
|
[connection signal="pressed" from="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer/VBoxContainer/WhenDisconnected/HBoxContainer/Host" to="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer" method="OnHostPressed"] |
||||||
|
[connection signal="pressed" from="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer/VBoxContainer/WhenConnected/Disconnect" to="PanelContainer/MarginContainer/VBoxContainer/GridContainer/TabContainer/Multiplayer" method="OnDisconnectPressed"] |
||||||
|
[connection signal="pressed" from="PanelContainer/MarginContainer/VBoxContainer/GridContainer/Quit" to="." method="OnQuitPressed"] |
||||||
|
[connection signal="pressed" from="PanelContainer/MarginContainer/VBoxContainer/GridContainer/Return" to="." method="OnReturnPressed"] |
Loading…
Reference in new issue