[gd_scene load_steps=9 format=3 uid="uid://bjctlqvs33nqy"] [ext_resource type="Texture2D" uid="uid://c1tjamjm8qjog" path="res://interfaces/menus/boot/background.webp" id="1_ph586"] [sub_resource type="GDScript" id="GDScript_jd8xf"] resource_name = "MainMenu" script/source = "class_name BootMenu extends CanvasLayer signal start_demo func _on_demo_pressed() -> void: start_demo.emit() func _on_multiplayer_pressed() -> void: _show_menu($Multiplayer) func _on_settings_pressed() -> void: _show_menu($Settings) func _on_quit_pressed() -> void: get_tree().quit() func _on_main_menu_pressed() -> void: _show_menu($Main) func _show_menu(menu : PanelContainer) -> void: $Multiplayer.hide() $Multiplayer.tab_container.current_tab = 0 $Settings.hide() $Settings.tab_container.current_tab = 0 $Main.hide() menu.show() " [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_krqeq"] bg_color = Color(0.501961, 0.501961, 0.501961, 0.25098) [sub_resource type="GDScript" id="GDScript_tc1bm"] script/source = "extends PanelContainer const DEFAULT_HOST : String = \"localhost\" const DEFAULT_PORT : int = 9000 const CONFIG_FILE_PATH : String = \"user://profile.cfg\" var _join_address : RegEx = RegEx.new() var _registered_ports : RegEx = RegEx.new() var _config_file : ConfigFile = ConfigFile.new() signal start_server(port : int) signal join_server(host : String, port : int) @onready var modal : Control = $Modal @onready var menu : CanvasLayer = get_parent() @onready var game : Node3D = get_tree().current_scene @onready var map_selector : OptionButton = %MapSelector @export var tab_container : TabContainer func _ready() -> void: # see https://datatracker.ietf.org/doc/html/rfc1700 _registered_ports.compile(r'^(?:102[4-9]|10[3-9]\\d|1[1-9]\\d{2}|[2-9]\\d{3}|[1-5]\\d{4}|6[0-4]\\d{3}|65[0-4]\\d{2}|655[0-2]\\d|6553[0-5])$') _join_address.compile(r'^(?[a-zA-Z0-9.-]+)(:(?:102[4-9]|10[3-9]\\d|1[1-9]\\d{2}|[2-9]\\d{3}|[1-5]\\d{4}|6[0-4]\\d{3}|65[0-4]\\d{2}|655[0-2]\\d|6553[0-5]))?$') _load_config() call_deferred(\"_populate_map_selector\") func _populate_map_selector() -> void: for map : PackedScene in game.maps: var map_name : String = map._bundled.names[0] map_selector.add_item(map_name) func _load_config() -> void: var error : Error = _config_file.load(CONFIG_FILE_PATH) if error != OK: return var profile_name : String = _config_file.get_value(\"profile\", \"name\", \"Newblood\") %ProfileName.text = profile_name func _on_save_pressed() -> void: _config_file.set_value(\"profile\", \"name\", %ProfileName.text) _config_file.save(CONFIG_FILE_PATH) func _on_menu_pressed() -> void: hide() owner.get_node(\"Main\").show() func _on_quit_pressed() -> void: get_tree().quit() func _on_host_pressed() -> void: var port : int = DEFAULT_PORT # check for registered ports number matches if %ServerPort.text: var result : RegExMatch = _registered_ports.search(%ServerPort.text) if result: # port is valid port = int(result.get_string()) else: # port is not valid push_warning(\"A valid port number in the range 1024-65535 is required.\") return start_server.emit(port, %ProfileName.text) func _on_join_pressed() -> void: var addr : Array = [DEFAULT_HOST, DEFAULT_PORT] # validate join address input var result : RegExMatch = _join_address.search(%JoinAddress.text) if result: # address is valid addr[0] = result.get_string(\"host\") var rport : String = result.get_string(\"port\") if rport: addr[1] = int(rport) $Modal.show() join_server.emit(addr[0], addr[1], %ProfileName.text) func _on_connected_to_server() -> void: $Modal.hide() menu.hide() func _on_connection_failed() -> void: $Modal.hide() " [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ky5sv"] bg_color = Color(0.5, 0.5, 0.5, 0.25) [sub_resource type="GDScript" id="GDScript_gbnwv"] resource_name = "Settings" script/source = "extends PanelContainer const WINDOW_MODE_OPTIONS = [DisplayServer.WINDOW_MODE_WINDOWED, DisplayServer.WINDOW_MODE_FULLSCREEN] @onready var _game_settings : Settings = get_node(\"/root/GlobalSettings\") @export var tab_container : TabContainer func _ready() -> void: %FOVSpinBox.value = _game_settings.fov %SensitivitySpinBox.value = _game_settings.mouse_sensitivity var window_mode : int = 1 if _game_settings.fullscreen else 0 %InvertedYCheckbox.button_pressed = _game_settings.inverted_y_axis %WindowModeOptionButton.select(window_mode) func _on_save_pressed() -> void: _game_settings.fov = %FOVSpinBox.value _game_settings.mouse_sensitivity = %SensitivitySpinBox.value _game_settings.inverted_y_axis = %InvertedYCheckbox.button_pressed _game_settings.fullscreen = %WindowModeOptionButton.selected == 1 _game_settings.save_to_file() " [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_c4ymk"] bg_color = Color(0, 0, 0, 0) [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_dq4me"] bg_color = Color(0, 0.5, 0.5, 0.2) [node name="BootMenu" type="CanvasLayer"] script = SubResource("GDScript_jd8xf") [node name="TextureRect" type="TextureRect" parent="."] anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 texture = ExtResource("1_ph586") stretch_mode = 6 [node name="Multiplayer" type="PanelContainer" parent="." node_paths=PackedStringArray("tab_container")] visible = false anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 theme_override_styles/panel = SubResource("StyleBoxFlat_krqeq") script = SubResource("GDScript_tc1bm") tab_container = NodePath("MarginContainer/VBoxContainer/TabContainer") [node name="MarginContainer" type="MarginContainer" parent="Multiplayer"] layout_mode = 2 theme_override_constants/margin_left = 20 theme_override_constants/margin_top = 20 theme_override_constants/margin_right = 20 theme_override_constants/margin_bottom = 20 [node name="VBoxContainer" type="VBoxContainer" parent="Multiplayer/MarginContainer"] layout_mode = 2 [node name="TabContainer" type="TabContainer" parent="Multiplayer/MarginContainer/VBoxContainer"] layout_mode = 2 size_flags_vertical = 3 theme_override_constants/side_margin = 0 [node name="Profile" type="TabBar" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer"] layout_mode = 2 theme_override_constants/h_separation = 0 [node name="MarginContainer" type="MarginContainer" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Profile"] layout_mode = 0 offset_right = 1116.0 offset_bottom = 577.0 theme_override_constants/margin_left = 20 theme_override_constants/margin_top = 20 theme_override_constants/margin_right = 20 theme_override_constants/margin_bottom = 20 [node name="HBoxContainer" type="HBoxContainer" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer"] layout_mode = 2 theme_override_constants/separation = 20 [node name="LeftBox" type="Control" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer"] layout_mode = 2 size_flags_horizontal = 3 size_flags_stretch_ratio = 0.25 [node name="Top" type="VBoxContainer" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox"] layout_mode = 1 anchors_preset = 10 anchor_right = 1.0 offset_bottom = 101.0 grow_horizontal = 2 size_flags_horizontal = 3 size_flags_stretch_ratio = 0.25 [node name="Create" type="Button" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox/Top"] layout_mode = 2 disabled = true text = "Create" [node name="Delete" type="Button" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox/Top"] layout_mode = 2 disabled = true text = "Delete" [node name="Save" type="Button" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox/Top"] layout_mode = 2 text = "Save" [node name="Bottom" type="VBoxContainer" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox"] layout_mode = 1 anchors_preset = 12 anchor_top = 1.0 anchor_right = 1.0 anchor_bottom = 1.0 offset_top = -31.0 grow_horizontal = 2 grow_vertical = 0 size_flags_horizontal = 0 [node name="MainMenu" type="Button" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox/Bottom"] layout_mode = 2 size_flags_horizontal = 3 text = "Main Menu " [node name="Quit" type="Button" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox/Bottom"] layout_mode = 2 size_flags_horizontal = 3 text = "Quit" [node name="RightBox" type="VBoxContainer" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer"] layout_mode = 2 size_flags_horizontal = 3 [node name="Label" type="Label" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/RightBox"] layout_mode = 2 text = "Current Profile:" [node name="ProfileName" type="LineEdit" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/RightBox"] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 text = "Newblood" [node name="Join" type="TabBar" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer"] visible = false layout_mode = 2 select_with_rmb = true [node name="MarginContainer" type="MarginContainer" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Join"] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 theme_override_constants/margin_left = 20 theme_override_constants/margin_top = 20 theme_override_constants/margin_right = 20 theme_override_constants/margin_bottom = 20 [node name="HBoxContainer" type="HBoxContainer" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer"] layout_mode = 2 theme_override_constants/separation = 10 [node name="LeftBox" type="Control" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer"] layout_mode = 2 size_flags_horizontal = 3 size_flags_stretch_ratio = 0.25 [node name="Top" type="VBoxContainer" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer/LeftBox"] layout_mode = 1 anchors_preset = 10 anchor_right = 1.0 offset_bottom = 101.0 grow_horizontal = 2 size_flags_horizontal = 3 size_flags_stretch_ratio = 0.25 [node name="Join" type="Button" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer/LeftBox/Top"] layout_mode = 2 text = "Join" [node name="Bottom" type="VBoxContainer" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer/LeftBox"] layout_mode = 1 anchors_preset = 12 anchor_top = 1.0 anchor_right = 1.0 anchor_bottom = 1.0 offset_top = -31.0 grow_horizontal = 2 grow_vertical = 0 size_flags_horizontal = 0 [node name="MainMenu" type="Button" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer/LeftBox/Bottom"] layout_mode = 2 size_flags_horizontal = 3 text = "Main Menu " [node name="Quit" type="Button" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer/LeftBox/Bottom"] layout_mode = 2 size_flags_horizontal = 3 text = "Quit" [node name="RightBox" type="VBoxContainer" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer"] layout_mode = 2 size_flags_horizontal = 3 [node name="JoinAddress" type="LineEdit" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer/RightBox"] unique_name_in_owner = true layout_mode = 2 placeholder_text = "localhost" [node name="Host" type="TabBar" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer"] visible = false layout_mode = 2 select_with_rmb = true [node name="MarginContainer" type="MarginContainer" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Host"] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 theme_override_constants/margin_left = 20 theme_override_constants/margin_top = 20 theme_override_constants/margin_right = 20 theme_override_constants/margin_bottom = 20 [node name="HBoxContainer" type="HBoxContainer" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer"] layout_mode = 2 theme_override_constants/separation = 10 [node name="LeftBox" type="Control" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer"] layout_mode = 2 size_flags_horizontal = 3 size_flags_stretch_ratio = 0.25 [node name="Top" type="VBoxContainer" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/LeftBox"] layout_mode = 1 anchors_preset = 10 anchor_right = 1.0 offset_bottom = 101.0 grow_horizontal = 2 size_flags_horizontal = 3 size_flags_stretch_ratio = 0.25 [node name="Host" type="Button" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/LeftBox/Top"] layout_mode = 2 text = "Host" [node name="Bottom" type="VBoxContainer" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/LeftBox"] layout_mode = 1 anchors_preset = 12 anchor_top = 1.0 anchor_right = 1.0 anchor_bottom = 1.0 offset_top = -66.0 grow_horizontal = 2 grow_vertical = 0 size_flags_horizontal = 0 [node name="MainMenu" type="Button" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/LeftBox/Bottom"] layout_mode = 2 size_flags_horizontal = 3 text = "Main Menu " [node name="Quit" type="Button" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/LeftBox/Bottom"] layout_mode = 2 size_flags_horizontal = 3 text = "Quit" [node name="RightBox" type="VBoxContainer" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer"] layout_mode = 2 size_flags_horizontal = 3 [node name="ServerPort" type="LineEdit" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/RightBox"] unique_name_in_owner = true layout_mode = 2 placeholder_text = "9000" [node name="MapSelector" type="OptionButton" parent="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/RightBox"] unique_name_in_owner = true layout_mode = 2 clip_text = true allow_reselect = true [node name="Modal" type="Panel" parent="Multiplayer"] visible = false layout_mode = 2 [node name="Label" type="Label" parent="Multiplayer/Modal"] layout_mode = 1 anchors_preset = 8 anchor_left = 0.5 anchor_top = 0.5 anchor_right = 0.5 anchor_bottom = 0.5 offset_left = -59.5 offset_top = -11.5 offset_right = 59.5 offset_bottom = 11.5 grow_horizontal = 2 grow_vertical = 2 text = "CONNECTING..." [node name="Settings" type="PanelContainer" parent="." node_paths=PackedStringArray("tab_container")] visible = false anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 theme_override_styles/panel = SubResource("StyleBoxFlat_ky5sv") script = SubResource("GDScript_gbnwv") tab_container = NodePath("MarginContainer/VBoxContainer/TabContainer") [node name="MarginContainer" type="MarginContainer" parent="Settings"] layout_mode = 2 theme_override_constants/margin_left = 20 theme_override_constants/margin_top = 20 theme_override_constants/margin_right = 20 theme_override_constants/margin_bottom = 20 [node name="VBoxContainer" type="VBoxContainer" parent="Settings/MarginContainer"] layout_mode = 2 [node name="TabContainer" type="TabContainer" parent="Settings/MarginContainer/VBoxContainer"] layout_mode = 2 size_flags_vertical = 3 theme_override_constants/side_margin = 0 [node name="Gameplay" type="TabBar" parent="Settings/MarginContainer/VBoxContainer/TabContainer"] layout_mode = 2 theme_override_constants/h_separation = 0 [node name="MarginContainer" type="MarginContainer" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay"] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 theme_override_constants/margin_left = 20 theme_override_constants/margin_top = 20 theme_override_constants/margin_right = 20 theme_override_constants/margin_bottom = 20 [node name="GridContainer" type="GridContainer" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay/MarginContainer"] layout_mode = 2 columns = 2 [node name="FOVLabel" type="Label" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay/MarginContainer/GridContainer"] layout_mode = 2 text = "Field of view" [node name="FOVSpinBox" type="SpinBox" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay/MarginContainer/GridContainer"] unique_name_in_owner = true layout_mode = 2 min_value = 60.0 max_value = 120.0 value = 60.0 [node name="SensitivityLabel" type="Label" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay/MarginContainer/GridContainer"] layout_mode = 2 text = "Mouse sensitivity" [node name="SensitivitySpinBox" type="SpinBox" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay/MarginContainer/GridContainer"] unique_name_in_owner = true layout_mode = 2 max_value = 1.0 step = 0.01 value = 1.0 [node name="InvertedYLabel" type="Label" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay/MarginContainer/GridContainer"] layout_mode = 2 text = "Inverted Y" [node name="InvertedYCheckbox" type="CheckBox" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay/MarginContainer/GridContainer"] unique_name_in_owner = true layout_mode = 2 [node name="Buttons" type="HBoxContainer" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay/MarginContainer"] layout_mode = 2 size_flags_vertical = 8 [node name="Bottom" type="VBoxContainer" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay/MarginContainer/Buttons"] layout_mode = 2 size_flags_horizontal = 3 size_flags_stretch_ratio = 0.2 [node name="Save" type="Button" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay/MarginContainer/Buttons/Bottom"] layout_mode = 2 text = "Save " [node name="MainMenu" type="Button" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay/MarginContainer/Buttons/Bottom"] layout_mode = 2 size_flags_horizontal = 3 text = "Main Menu " [node name="Quit" type="Button" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay/MarginContainer/Buttons/Bottom"] layout_mode = 2 size_flags_horizontal = 3 text = "Quit" [node name="Spacer" type="Control" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay/MarginContainer/Buttons"] layout_mode = 2 size_flags_horizontal = 3 size_flags_stretch_ratio = 0.8 [node name="Graphics" type="TabBar" parent="Settings/MarginContainer/VBoxContainer/TabContainer"] visible = false layout_mode = 2 select_with_rmb = true [node name="MarginContainer" type="MarginContainer" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Graphics"] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 theme_override_constants/margin_left = 20 theme_override_constants/margin_top = 20 theme_override_constants/margin_right = 20 theme_override_constants/margin_bottom = 20 [node name="GridContainer" type="GridContainer" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Graphics/MarginContainer"] layout_mode = 2 columns = 2 [node name="WindowModeLabel" type="Label" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Graphics/MarginContainer/GridContainer"] layout_mode = 2 text = "Window mode" [node name="WindowModeOptionButton" type="OptionButton" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Graphics/MarginContainer/GridContainer"] unique_name_in_owner = true layout_mode = 2 item_count = 2 selected = 0 popup/item_0/text = "Windowed" popup/item_0/id = 0 popup/item_1/text = "Fullscreen" popup/item_1/id = 1 [node name="Buttons" type="HBoxContainer" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Graphics/MarginContainer"] layout_mode = 2 size_flags_vertical = 8 [node name="Bottom" type="VBoxContainer" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Graphics/MarginContainer/Buttons"] layout_mode = 2 size_flags_horizontal = 3 size_flags_stretch_ratio = 0.2 [node name="Save" type="Button" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Graphics/MarginContainer/Buttons/Bottom"] layout_mode = 2 text = "Save " [node name="MainMenu" type="Button" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Graphics/MarginContainer/Buttons/Bottom"] layout_mode = 2 size_flags_horizontal = 3 text = "Main Menu " [node name="Quit" type="Button" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Graphics/MarginContainer/Buttons/Bottom"] layout_mode = 2 size_flags_horizontal = 3 text = "Quit" [node name="Spacer" type="Control" parent="Settings/MarginContainer/VBoxContainer/TabContainer/Graphics/MarginContainer/Buttons"] layout_mode = 2 size_flags_horizontal = 3 size_flags_stretch_ratio = 0.8 [node name="Main" type="PanelContainer" parent="."] anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 size_flags_horizontal = 0 theme_override_styles/panel = SubResource("StyleBoxFlat_c4ymk") [node name="HBoxContainer" type="HBoxContainer" parent="Main"] layout_mode = 2 [node name="PanelContainer" type="PanelContainer" parent="Main/HBoxContainer"] layout_mode = 2 size_flags_horizontal = 3 size_flags_stretch_ratio = 0.3 theme_override_styles/panel = SubResource("StyleBoxFlat_dq4me") [node name="MarginContainer" type="MarginContainer" parent="Main/HBoxContainer/PanelContainer"] layout_mode = 2 size_flags_horizontal = 3 theme_override_constants/margin_left = 20 theme_override_constants/margin_right = 20 [node name="VBoxContainer" type="VBoxContainer" parent="Main/HBoxContainer/PanelContainer/MarginContainer"] layout_mode = 2 theme_override_constants/separation = 10 alignment = 1 [node name="Demo" type="Button" parent="Main/HBoxContainer/PanelContainer/MarginContainer/VBoxContainer"] layout_mode = 2 theme_override_font_sizes/font_size = 32 text = "Demo" [node name="Multiplayer" type="Button" parent="Main/HBoxContainer/PanelContainer/MarginContainer/VBoxContainer"] layout_mode = 2 theme_override_font_sizes/font_size = 32 text = "Multiplayer" [node name="Settings" type="Button" parent="Main/HBoxContainer/PanelContainer/MarginContainer/VBoxContainer"] layout_mode = 2 theme_override_font_sizes/font_size = 32 text = "Settings" [node name="Quit" type="Button" parent="Main/HBoxContainer/PanelContainer/MarginContainer/VBoxContainer"] layout_mode = 2 theme_override_font_sizes/font_size = 32 text = "Quit" [node name="Control" type="Control" parent="Main/HBoxContainer"] layout_mode = 2 size_flags_horizontal = 3 size_flags_stretch_ratio = 0.8 [connection signal="join_server" from="Multiplayer" to="." method="_on_multiplayer_join_server"] [connection signal="start_server" from="Multiplayer" to="." method="_on_multiplayer_start_server"] [connection signal="pressed" from="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox/Top/Save" to="Multiplayer" method="_on_save_pressed"] [connection signal="pressed" from="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox/Bottom/MainMenu" to="." method="_on_main_menu_pressed"] [connection signal="pressed" from="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Profile/MarginContainer/HBoxContainer/LeftBox/Bottom/Quit" to="." method="_on_quit_pressed"] [connection signal="pressed" from="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer/LeftBox/Top/Join" to="Multiplayer" method="_on_join_pressed"] [connection signal="pressed" from="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer/LeftBox/Bottom/MainMenu" to="." method="_on_main_menu_pressed"] [connection signal="pressed" from="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Join/MarginContainer/HBoxContainer/LeftBox/Bottom/Quit" to="." method="_on_quit_pressed"] [connection signal="pressed" from="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/LeftBox/Top/Host" to="Multiplayer" method="_on_host_pressed"] [connection signal="pressed" from="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/LeftBox/Bottom/MainMenu" to="." method="_on_main_menu_pressed"] [connection signal="pressed" from="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/LeftBox/Bottom/Quit" to="." method="_on_quit_pressed"] [connection signal="text_changed" from="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/RightBox/ServerPort" to="Multiplayer/MarginContainer/VBoxContainer/TabContainer/Host/MarginContainer/HBoxContainer/RightBox/ServerPort" method="_on_text_changed"] [connection signal="pressed" from="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay/MarginContainer/Buttons/Bottom/Save" to="Settings" method="_on_save_pressed"] [connection signal="pressed" from="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay/MarginContainer/Buttons/Bottom/MainMenu" to="." method="_on_main_menu_pressed"] [connection signal="pressed" from="Settings/MarginContainer/VBoxContainer/TabContainer/Gameplay/MarginContainer/Buttons/Bottom/Quit" to="." method="_on_quit_pressed"] [connection signal="pressed" from="Settings/MarginContainer/VBoxContainer/TabContainer/Graphics/MarginContainer/Buttons/Bottom/Save" to="Settings" method="_on_save_pressed"] [connection signal="pressed" from="Settings/MarginContainer/VBoxContainer/TabContainer/Graphics/MarginContainer/Buttons/Bottom/MainMenu" to="." method="_on_main_menu_pressed"] [connection signal="pressed" from="Settings/MarginContainer/VBoxContainer/TabContainer/Graphics/MarginContainer/Buttons/Bottom/Quit" to="." method="_on_quit_pressed"] [connection signal="pressed" from="Main/HBoxContainer/PanelContainer/MarginContainer/VBoxContainer/Demo" to="." method="_on_demo_pressed"] [connection signal="pressed" from="Main/HBoxContainer/PanelContainer/MarginContainer/VBoxContainer/Multiplayer" to="." method="_on_multiplayer_pressed"] [connection signal="pressed" from="Main/HBoxContainer/PanelContainer/MarginContainer/VBoxContainer/Settings" to="." method="_on_settings_pressed"] [connection signal="pressed" from="Main/HBoxContainer/PanelContainer/MarginContainer/VBoxContainer/Quit" to="." method="_on_quit_pressed"]