Start adding main menu controller support

This commit is contained in:
Sofia 2026-08-07 20:52:22 +03:00
parent 01bd04c905
commit 399606357c
3 changed files with 310 additions and 267 deletions

View File

@ -57,6 +57,14 @@ model_point_class_save_path="godot/maps/entity_models"
[input]
ui_accept={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":16,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194309,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":16,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194310,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":16,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":0,"pressure":0.0,"pressed":true,"script":null)
]
}
toggle_cli={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":167,"key_label":0,"unicode":167,"location":0,"echo":false,"script":null)

View File

@ -7,21 +7,22 @@
[ext_resource type="Texture2D" uid="uid://3gpd2qpyw5eq" path="res://assets/title.png" id="4_pm3ni"]
[ext_resource type="PackedScene" uid="uid://c62c5iq0w72ka" path="res://maps/precipice/precipice_static.scn" id="6_tefeu"]
[node name="menu" type="MainMenu" unique_id=2036763876 node_paths=PackedStringArray("camera", "main_position", "host_position", "main_panel", "host_panel", "join_panel", "host_port", "join_addr", "join_port", "recent_servers_button", "popup_panel", "popup_title", "popup_text", "popup_button", "open_replay_dialog")]
[node name="menu" type="MainMenu" unique_id=2036763876 node_paths=PackedStringArray("camera", "main_position", "host_position", "host_main_button", "main_panel", "host_panel", "join_panel", "host_port", "join_addr", "join_port", "recent_servers_button", "popup_panel", "popup_title", "popup_text", "popup_button", "open_replay_dialog")]
camera = NodePath("camera_3d")
main_position = NodePath("main_pos")
host_position = NodePath("host_pos")
main_panel = NodePath("main_panel")
host_panel = NodePath("host_panel")
join_panel = NodePath("join_panel")
host_port = NodePath("host_panel/v_box_container/host_port")
join_addr = NodePath("join_panel/v_box_container/margin_container/v_box_container/address_text")
join_port = NodePath("join_panel/v_box_container/margin_container/v_box_container/port_text")
recent_servers_button = NodePath("join_panel/v_box_container/margin_container/v_box_container/recent_servers")
popup_panel = NodePath("popup_panel")
popup_title = NodePath("popup_panel/v_box_container/title")
popup_text = NodePath("popup_panel/v_box_container/text")
popup_button = NodePath("popup_panel/v_box_container/ok")
host_main_button = NodePath("menus/main_panel/v_box_container/margin_container/v_box_container/host")
main_panel = NodePath("menus/main_panel")
host_panel = NodePath("menus/host_panel")
join_panel = NodePath("menus/join_panel")
host_port = NodePath("menus/host_panel/v_box_container/host_port")
join_addr = NodePath("menus/join_panel/v_box_container/margin_container/v_box_container/address_text")
join_port = NodePath("menus/join_panel/v_box_container/margin_container/v_box_container/port_text")
recent_servers_button = NodePath("menus/join_panel/v_box_container/margin_container/v_box_container/recent_servers")
popup_panel = NodePath("menus/popup_panel")
popup_title = NodePath("menus/popup_panel/v_box_container/title")
popup_text = NodePath("menus/popup_panel/v_box_container/text")
popup_button = NodePath("menus/popup_panel/v_box_container/ok")
credits = ExtResource("1_sugp2")
open_replay_dialog = NodePath("open_replay_dialog")
@ -38,256 +39,12 @@ transform = Transform3D(0.9823497, 0, 0.18705386, 0, 1, 0, -0.18705386, 0, 0.982
[node name="menu_player3" parent="." unique_id=1638403481 instance=ExtResource("1_o5qli")]
transform = Transform3D(-0.26696783, 0, 0.9637054, 0, 1, 0, -0.9637054, 0, -0.26696783, -3.5550833, -2.3841858e-07, 2.7302406)
[node name="main_panel" type="Panel" parent="." unique_id=2078435804]
offset_left = 136.0
offset_top = 111.0
offset_right = 339.0
offset_bottom = 508.0
theme = ExtResource("3_jscy8")
[node name="v_box_container" type="VBoxContainer" parent="main_panel" unique_id=287461844]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -47.0
offset_top = -95.0
offset_right = 47.0
offset_bottom = 95.0
grow_horizontal = 2
grow_vertical = 2
alignment = 1
[node name="texture_rect" type="TextureRect" parent="main_panel/v_box_container" unique_id=1881966626]
custom_minimum_size = Vector2(0, 30)
layout_mode = 2
texture = ExtResource("4_pm3ni")
expand_mode = 3
stretch_mode = 4
[node name="margin_container" type="MarginContainer" parent="main_panel/v_box_container" unique_id=143702935]
layout_mode = 2
theme_override_constants/margin_top = 50
[node name="v_box_container" type="VBoxContainer" parent="main_panel/v_box_container/margin_container" unique_id=358951965]
layout_mode = 2
[node name="host" type="Button" parent="main_panel/v_box_container/margin_container/v_box_container" unique_id=1962091117]
layout_mode = 2
text = "Host Game"
metadata/_edit_lock_ = true
[node name="join" type="Button" parent="main_panel/v_box_container/margin_container/v_box_container" unique_id=1364459397]
layout_mode = 2
text = "Join Game"
metadata/_edit_lock_ = true
[node name="play_replay" type="Button" parent="main_panel/v_box_container/margin_container/v_box_container" unique_id=275552647]
layout_mode = 2
text = "Play Replay"
metadata/_edit_lock_ = true
[node name="credits" type="Button" parent="main_panel/v_box_container/margin_container/v_box_container" unique_id=953921422]
layout_mode = 2
text = "Credits"
metadata/_edit_lock_ = true
[node name="settings" type="Button" parent="main_panel/v_box_container/margin_container/v_box_container" unique_id=1153899756]
layout_mode = 2
text = "Settings"
metadata/_edit_lock_ = true
[node name="quit" type="Button" parent="main_panel/v_box_container/margin_container/v_box_container" unique_id=1508139096]
layout_mode = 2
text = "Quit"
metadata/_edit_lock_ = true
[node name="host_panel" type="Panel" parent="." unique_id=1633876079]
visible = false
offset_left = 139.0
offset_top = 167.0
offset_right = 336.0
offset_bottom = 474.0
theme = ExtResource("3_jscy8")
[node name="v_box_container" type="VBoxContainer" parent="host_panel" unique_id=1651169053]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -47.0
offset_top = -95.0
offset_right = 47.0
offset_bottom = 95.0
grow_horizontal = 2
grow_vertical = 2
alignment = 1
[node name="title" type="Label" parent="host_panel/v_box_container" unique_id=1539421918]
custom_minimum_size = Vector2(0, 50)
layout_mode = 2
text = "Host Game"
horizontal_alignment = 1
metadata/_edit_lock_ = true
[node name="port_label" type="Label" parent="host_panel/v_box_container" unique_id=1618746525]
layout_mode = 2
text = "Port"
horizontal_alignment = 1
[node name="host_port" type="SpinBox" parent="host_panel/v_box_container" unique_id=1116593197]
layout_mode = 2
max_value = 16000.0
value = 8080.0
alignment = 1
[node name="host" type="Button" parent="host_panel/v_box_container" unique_id=312403378]
layout_mode = 2
text = "Host"
[node name="back" type="Button" parent="host_panel/v_box_container" unique_id=1658922684]
layout_mode = 2
text = "Back"
[node name="join_panel" type="Panel" parent="." unique_id=1630672771]
visible = false
offset_left = 122.0
offset_top = 115.0
offset_right = 352.0
offset_bottom = 509.0
theme = ExtResource("3_jscy8")
[node name="v_box_container" type="VBoxContainer" parent="join_panel" unique_id=2029384993]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -47.0
offset_top = -95.0
offset_right = 47.0
offset_bottom = 95.0
grow_horizontal = 2
grow_vertical = 2
alignment = 1
[node name="title" type="Label" parent="join_panel/v_box_container" unique_id=268455606]
custom_minimum_size = Vector2(0, 50)
layout_mode = 2
text = "Join Game"
horizontal_alignment = 1
metadata/_edit_lock_ = true
[node name="margin_container" type="MarginContainer" parent="join_panel/v_box_container" unique_id=979302447]
layout_mode = 2
theme_override_constants/margin_top = 0
theme_override_constants/margin_bottom = 30
[node name="v_box_container" type="VBoxContainer" parent="join_panel/v_box_container/margin_container" unique_id=1555998390]
layout_mode = 2
[node name="recent_servers_label" type="Label" parent="join_panel/v_box_container/margin_container/v_box_container" unique_id=683871668]
layout_mode = 2
text = "Recent Servers"
horizontal_alignment = 1
[node name="recent_servers" type="OptionButton" parent="join_panel/v_box_container/margin_container/v_box_container" unique_id=486398131]
layout_mode = 2
[node name="address_label" type="Label" parent="join_panel/v_box_container/margin_container/v_box_container" unique_id=425811384]
layout_mode = 2
text = "Address"
horizontal_alignment = 1
[node name="address_text" type="LineEdit" parent="join_panel/v_box_container/margin_container/v_box_container" unique_id=672176728]
custom_minimum_size = Vector2(150, 30)
layout_mode = 2
text = "127.0.0.1"
[node name="port_label" type="Label" parent="join_panel/v_box_container/margin_container/v_box_container" unique_id=1606834624]
layout_mode = 2
text = "Port"
horizontal_alignment = 1
[node name="port_text" type="SpinBox" parent="join_panel/v_box_container/margin_container/v_box_container" unique_id=418812818]
custom_minimum_size = Vector2(150, 30)
layout_mode = 2
min_value = 1.0
max_value = 16000.0
value = 8080.0
[node name="join" type="Button" parent="join_panel/v_box_container" unique_id=1953386108]
layout_mode = 2
text = "Join"
[node name="back" type="Button" parent="join_panel/v_box_container" unique_id=759190425]
layout_mode = 2
text = "Back"
[node name="settings" parent="." unique_id=999912383 instance=ExtResource("2_0wfyh")]
visible = false
[node name="main_pos" type="Node3D" parent="." unique_id=98241074]
transform = Transform3D(0.98629165, -0.031186387, 0.16203767, -1.4054484e-08, 0.981978, 0.1889952, -0.16501155, -0.18640435, 0.9685167, 1.0974054, 1.7166122, 1.4909104)
[node name="host_pos" type="Node3D" parent="." unique_id=663794107]
transform = Transform3D(0.3960592, -0.17354009, 0.90167665, -1.9851193e-08, 0.981978, 0.18899521, -0.9182249, -0.0748533, 0.38892144, -1.0602233, 1.7166122, 3.759781)
[node name="popup_panel" type="Panel" parent="." unique_id=1792775604]
visible = false
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -153.0
offset_top = -71.0
offset_right = 153.0
offset_bottom = 71.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("3_jscy8")
[node name="v_box_container" type="VBoxContainer" parent="popup_panel" unique_id=465766643]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -20.0
offset_top = -20.0
offset_right = 20.0
offset_bottom = 20.0
grow_horizontal = 2
grow_vertical = 2
alignment = 1
[node name="title" type="Label" parent="popup_panel/v_box_container" unique_id=1944397487]
layout_mode = 2
size_flags_horizontal = 4
theme_override_font_sizes/font_size = 25
text = "Some Title"
horizontal_alignment = 1
[node name="text" type="Label" parent="popup_panel/v_box_container" unique_id=1988165424]
custom_minimum_size = Vector2(300, 0)
custom_maximum_size = Vector2(300, -1)
layout_mode = 2
size_flags_horizontal = 4
text = "Some text"
horizontal_alignment = 1
autowrap_mode = 3
[node name="ok" type="Button" parent="popup_panel/v_box_container" unique_id=488898874]
layout_mode = 2
text = "Ok"
[node name="open_replay_dialog" type="FileDialog" parent="." unique_id=925465558]
title = "Open a File"
file_mode = 0
@ -318,14 +75,279 @@ spot_angle = 11.861256
[node name="precipice_static" parent="background" unique_id=1151780860 instance=ExtResource("6_tefeu")]
transform = Transform3D(0.37768292, 0, 0.925935, 0, 1, 0, -0.925935, 0, 0.37768292, 34.79668, -16.012611, -118.59651)
[connection signal="pressed" from="main_panel/v_box_container/margin_container/v_box_container/host" to="." method="go_to_host_game"]
[connection signal="pressed" from="main_panel/v_box_container/margin_container/v_box_container/join" to="." method="go_to_join_game"]
[connection signal="pressed" from="main_panel/v_box_container/margin_container/v_box_container/play_replay" to="." method="open_replay_dialog"]
[connection signal="pressed" from="main_panel/v_box_container/margin_container/v_box_container/credits" to="." method="open_credits"]
[connection signal="pressed" from="main_panel/v_box_container/margin_container/v_box_container/settings" to="settings" method="open"]
[connection signal="pressed" from="main_panel/v_box_container/margin_container/v_box_container/quit" to="." method="quit_game"]
[connection signal="pressed" from="host_panel/v_box_container/host" to="." method="host_game"]
[connection signal="pressed" from="host_panel/v_box_container/back" to="." method="go_to_main_menu"]
[connection signal="pressed" from="join_panel/v_box_container/join" to="." method="join_game"]
[connection signal="pressed" from="join_panel/v_box_container/back" to="." method="go_to_main_menu"]
[connection signal="pressed" from="popup_panel/v_box_container/ok" to="." method="hide_popup"]
[node name="menus" type="Control" parent="." unique_id=63647336]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="main_panel" type="Panel" parent="menus" unique_id=2078435804]
layout_mode = 0
offset_left = 136.0
offset_top = 111.0
offset_right = 339.0
offset_bottom = 508.0
theme = ExtResource("3_jscy8")
[node name="v_box_container" type="VBoxContainer" parent="menus/main_panel" unique_id=287461844]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -47.0
offset_top = -95.0
offset_right = 47.0
offset_bottom = 95.0
grow_horizontal = 2
grow_vertical = 2
alignment = 1
[node name="texture_rect" type="TextureRect" parent="menus/main_panel/v_box_container" unique_id=1881966626]
custom_minimum_size = Vector2(0, 30)
layout_mode = 2
texture = ExtResource("4_pm3ni")
expand_mode = 3
stretch_mode = 4
[node name="margin_container" type="MarginContainer" parent="menus/main_panel/v_box_container" unique_id=143702935]
layout_mode = 2
theme_override_constants/margin_top = 50
[node name="v_box_container" type="VBoxContainer" parent="menus/main_panel/v_box_container/margin_container" unique_id=358951965]
layout_mode = 2
[node name="host" type="Button" parent="menus/main_panel/v_box_container/margin_container/v_box_container" unique_id=1962091117]
layout_mode = 2
text = "Host Game"
metadata/_edit_lock_ = true
[node name="join" type="Button" parent="menus/main_panel/v_box_container/margin_container/v_box_container" unique_id=1364459397]
layout_mode = 2
text = "Join Game"
metadata/_edit_lock_ = true
[node name="play_replay" type="Button" parent="menus/main_panel/v_box_container/margin_container/v_box_container" unique_id=275552647]
layout_mode = 2
text = "Play Replay"
metadata/_edit_lock_ = true
[node name="credits" type="Button" parent="menus/main_panel/v_box_container/margin_container/v_box_container" unique_id=953921422]
layout_mode = 2
text = "Credits"
metadata/_edit_lock_ = true
[node name="settings" type="Button" parent="menus/main_panel/v_box_container/margin_container/v_box_container" unique_id=1153899756]
layout_mode = 2
text = "Settings"
metadata/_edit_lock_ = true
[node name="quit" type="Button" parent="menus/main_panel/v_box_container/margin_container/v_box_container" unique_id=1508139096]
layout_mode = 2
text = "Quit"
metadata/_edit_lock_ = true
[node name="host_panel" type="Panel" parent="menus" unique_id=1633876079]
visible = false
layout_mode = 0
offset_left = 139.0
offset_top = 167.0
offset_right = 336.0
offset_bottom = 474.0
theme = ExtResource("3_jscy8")
[node name="v_box_container" type="VBoxContainer" parent="menus/host_panel" unique_id=1651169053]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -47.0
offset_top = -95.0
offset_right = 47.0
offset_bottom = 95.0
grow_horizontal = 2
grow_vertical = 2
alignment = 1
[node name="title" type="Label" parent="menus/host_panel/v_box_container" unique_id=1539421918]
custom_minimum_size = Vector2(0, 50)
layout_mode = 2
text = "Host Game"
horizontal_alignment = 1
metadata/_edit_lock_ = true
[node name="port_label" type="Label" parent="menus/host_panel/v_box_container" unique_id=1618746525]
layout_mode = 2
text = "Port"
horizontal_alignment = 1
[node name="host_port" type="SpinBox" parent="menus/host_panel/v_box_container" unique_id=1116593197]
layout_mode = 2
max_value = 16000.0
value = 8080.0
alignment = 1
[node name="host" type="Button" parent="menus/host_panel/v_box_container" unique_id=312403378]
layout_mode = 2
text = "Host"
[node name="back" type="Button" parent="menus/host_panel/v_box_container" unique_id=1658922684]
layout_mode = 2
text = "Back"
[node name="join_panel" type="Panel" parent="menus" unique_id=1630672771]
visible = false
layout_mode = 0
offset_left = 122.0
offset_top = 115.0
offset_right = 352.0
offset_bottom = 509.0
theme = ExtResource("3_jscy8")
[node name="v_box_container" type="VBoxContainer" parent="menus/join_panel" unique_id=2029384993]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -47.0
offset_top = -95.0
offset_right = 47.0
offset_bottom = 95.0
grow_horizontal = 2
grow_vertical = 2
alignment = 1
[node name="title" type="Label" parent="menus/join_panel/v_box_container" unique_id=268455606]
custom_minimum_size = Vector2(0, 50)
layout_mode = 2
text = "Join Game"
horizontal_alignment = 1
metadata/_edit_lock_ = true
[node name="margin_container" type="MarginContainer" parent="menus/join_panel/v_box_container" unique_id=979302447]
layout_mode = 2
theme_override_constants/margin_top = 0
theme_override_constants/margin_bottom = 30
[node name="v_box_container" type="VBoxContainer" parent="menus/join_panel/v_box_container/margin_container" unique_id=1555998390]
layout_mode = 2
[node name="recent_servers_label" type="Label" parent="menus/join_panel/v_box_container/margin_container/v_box_container" unique_id=683871668]
layout_mode = 2
text = "Recent Servers"
horizontal_alignment = 1
[node name="recent_servers" type="OptionButton" parent="menus/join_panel/v_box_container/margin_container/v_box_container" unique_id=486398131]
layout_mode = 2
[node name="address_label" type="Label" parent="menus/join_panel/v_box_container/margin_container/v_box_container" unique_id=425811384]
layout_mode = 2
text = "Address"
horizontal_alignment = 1
[node name="address_text" type="LineEdit" parent="menus/join_panel/v_box_container/margin_container/v_box_container" unique_id=672176728]
custom_minimum_size = Vector2(150, 30)
layout_mode = 2
text = "127.0.0.1"
[node name="port_label" type="Label" parent="menus/join_panel/v_box_container/margin_container/v_box_container" unique_id=1606834624]
layout_mode = 2
text = "Port"
horizontal_alignment = 1
[node name="port_text" type="SpinBox" parent="menus/join_panel/v_box_container/margin_container/v_box_container" unique_id=418812818]
custom_minimum_size = Vector2(150, 30)
layout_mode = 2
min_value = 1.0
max_value = 16000.0
value = 8080.0
[node name="join" type="Button" parent="menus/join_panel/v_box_container" unique_id=1953386108]
layout_mode = 2
text = "Join"
[node name="back" type="Button" parent="menus/join_panel/v_box_container" unique_id=759190425]
layout_mode = 2
text = "Back"
[node name="settings" parent="menus" unique_id=999912383 instance=ExtResource("2_0wfyh")]
visible = false
layout_mode = 1
anchors_preset = 15
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 339.0
offset_top = 67.0
offset_right = -301.0
offset_bottom = -69.0
[node name="popup_panel" type="Panel" parent="menus" unique_id=1792775604]
visible = false
layout_mode = 0
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -153.0
offset_top = -71.0
offset_right = 153.0
offset_bottom = 71.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("3_jscy8")
[node name="v_box_container" type="VBoxContainer" parent="menus/popup_panel" unique_id=465766643]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -20.0
offset_top = -20.0
offset_right = 20.0
offset_bottom = 20.0
grow_horizontal = 2
grow_vertical = 2
alignment = 1
[node name="title" type="Label" parent="menus/popup_panel/v_box_container" unique_id=1944397487]
layout_mode = 2
size_flags_horizontal = 4
theme_override_font_sizes/font_size = 25
text = "Some Title"
horizontal_alignment = 1
[node name="text" type="Label" parent="menus/popup_panel/v_box_container" unique_id=1988165424]
custom_minimum_size = Vector2(300, 0)
custom_maximum_size = Vector2(300, -1)
layout_mode = 2
size_flags_horizontal = 4
text = "Some text"
horizontal_alignment = 1
autowrap_mode = 3
[node name="ok" type="Button" parent="menus/popup_panel/v_box_container" unique_id=488898874]
layout_mode = 2
text = "Ok"
[connection signal="pressed" from="menus/main_panel/v_box_container/margin_container/v_box_container/host" to="." method="go_to_host_game"]
[connection signal="pressed" from="menus/main_panel/v_box_container/margin_container/v_box_container/join" to="." method="go_to_join_game"]
[connection signal="pressed" from="menus/main_panel/v_box_container/margin_container/v_box_container/play_replay" to="." method="open_replay_dialog"]
[connection signal="pressed" from="menus/main_panel/v_box_container/margin_container/v_box_container/credits" to="." method="open_credits"]
[connection signal="pressed" from="menus/main_panel/v_box_container/margin_container/v_box_container/settings" to="menus/settings" method="open"]
[connection signal="pressed" from="menus/main_panel/v_box_container/margin_container/v_box_container/quit" to="." method="quit_game"]
[connection signal="pressed" from="menus/host_panel/v_box_container/host" to="." method="host_game"]
[connection signal="pressed" from="menus/host_panel/v_box_container/back" to="." method="go_to_main_menu"]
[connection signal="pressed" from="menus/join_panel/v_box_container/join" to="." method="join_game"]
[connection signal="pressed" from="menus/join_panel/v_box_container/back" to="." method="go_to_main_menu"]
[connection signal="pressed" from="menus/popup_panel/v_box_container/ok" to="." method="hide_popup"]

View File

@ -105,6 +105,12 @@ impl INode3D for MainMenu {
MusicManager::singleton()
.bind_mut()
.play(Some(Music::MainMenu), false);
if let Some(panel) = &mut self.main_panel {
if let Some(focus) = &mut panel.find_next_valid_focus() {
focus.grab_focus_ex().hide_focus(true).done();
}
}
}
fn process(&mut self, _delta: f64) {
@ -154,13 +160,20 @@ impl INode3D for MainMenu {
camera.set_global_rotation(new_rot);
if let Some(mut panel) = target_panel {
let mut changed = false;
if let Some(prev_panel) = &mut self.prev_panel {
if prev_panel.instance_id() != panel.instance_id() {
changed = true;
prev_panel.set_visible(false);
}
}
self.prev_panel = Some(panel.clone());
panel.set_visible(true);
if changed {
if let Some(focus) = &mut panel.find_next_valid_focus() {
focus.grab_focus_ex().hide_focus(true).done();
}
}
}
}
}