feat: Implement core game managers, player movement logic, and initial UI scenes.

This commit is contained in:
2025-12-27 05:45:57 +08:00
parent 6870016ba6
commit c5e9d073fa
23 changed files with 1456 additions and 97 deletions
+209 -39
View File
@@ -76,39 +76,6 @@ current = true
fov = 35.5
size = 23.0
[node name="NetworkPanel" type="Panel" parent="."]
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -185.0
offset_top = 25.0
offset_right = 185.0
offset_bottom = 78.0
grow_horizontal = 2
theme_override_styles/panel = ExtResource("5_dvx6y")
[node name="NetworkInfo" type="HBoxContainer" parent="NetworkPanel"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/separation = 50
alignment = 1
[node name="NetworkSideDisplay" type="Label" parent="NetworkPanel/NetworkInfo"]
layout_mode = 2
text = "Network Side"
horizontal_alignment = 1
vertical_alignment = 1
[node name="UniquePeerID" type="Label" parent="NetworkPanel/NetworkInfo"]
layout_mode = 2
text = "Unique Peer ID"
horizontal_alignment = 1
vertical_alignment = 1
[node name="PlayerboardPanel" type="PanelContainer" parent="."]
anchors_preset = 4
anchor_top = 0.5
@@ -9375,9 +9342,9 @@ anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -200.0
offset_top = -87.0
offset_top = -52.0
offset_right = 200.0
offset_bottom = -53.0
offset_bottom = -18.0
grow_horizontal = 2
grow_vertical = 0
theme_override_styles/panel = ExtResource("5_dvx6y")
@@ -9397,11 +9364,13 @@ theme_override_constants/separation = 4
anchors_preset = 1
anchor_left = 1.0
anchor_right = 1.0
offset_left = -294.0
offset_left = -211.0
offset_top = 15.0
offset_right = -18.0
offset_bottom = 215.0
offset_bottom = 166.0
grow_horizontal = 0
size_flags_horizontal = 3
size_flags_vertical = 3
[node name="MarginContainer" type="MarginContainer" parent="LeaderboardPanel"]
layout_mode = 2
@@ -9518,8 +9487,8 @@ horizontal_alignment = 2
[node name="GoalsTimer" type="PanelContainer" parent="."]
offset_left = 20.0
offset_top = 20.0
offset_right = 120.0
offset_bottom = 90.0
offset_right = 97.0
offset_bottom = 97.0
[node name="VBox" type="VBoxContainer" parent="GoalsTimer"]
layout_mode = 2
@@ -9537,6 +9506,207 @@ theme_override_font_sizes/font_size = 12
text = "seconds"
horizontal_alignment = 1
[node name="GlobalMatchTimer" type="PanelContainer" parent="."]
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -80.0
offset_top = 24.0
offset_right = 80.0
offset_bottom = 74.0
grow_horizontal = 2
[node name="VBox" type="VBoxContainer" parent="GlobalMatchTimer"]
layout_mode = 2
alignment = 1
[node name="TimerLabel" type="Label" parent="GlobalMatchTimer/VBox"]
layout_mode = 2
theme_override_font_sizes/font_size = 28
text = "3:00"
horizontal_alignment = 1
[node name="PauseMenu" type="CanvasLayer" parent="."]
process_mode = 3
layer = 10
visible = false
[node name="Background" type="ColorRect" parent="PauseMenu"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0, 0, 0, 0.7)
[node name="Panel" type="PanelContainer" parent="PauseMenu"]
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -150.0
offset_top = -150.0
offset_right = 150.0
offset_bottom = 150.0
grow_horizontal = 2
grow_vertical = 2
[node name="NetworkPanel" type="Panel" parent="PauseMenu/Panel"]
layout_mode = 2
theme_override_styles/panel = ExtResource("5_dvx6y")
[node name="NetworkInfo" type="HBoxContainer" parent="PauseMenu/Panel/NetworkPanel"]
layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -135.0
offset_right = 135.0
offset_bottom = 23.0
grow_horizontal = 2
theme_override_constants/separation = 50
alignment = 1
[node name="NetworkSideDisplay" type="Label" parent="PauseMenu/Panel/NetworkPanel/NetworkInfo"]
layout_mode = 2
text = "Network Side"
horizontal_alignment = 1
vertical_alignment = 1
[node name="UniquePeerID" type="Label" parent="PauseMenu/Panel/NetworkPanel/NetworkInfo"]
layout_mode = 2
text = "Unique Peer ID"
horizontal_alignment = 1
vertical_alignment = 1
[node name="VBox" type="VBoxContainer" parent="PauseMenu/Panel"]
layout_mode = 2
theme_override_constants/separation = 15
alignment = 1
[node name="Title" type="Label" parent="PauseMenu/Panel/VBox"]
layout_mode = 2
theme_override_font_sizes/font_size = 24
text = "PAUSED"
horizontal_alignment = 1
[node name="Spacer" type="Control" parent="PauseMenu/Panel/VBox"]
custom_minimum_size = Vector2(0, 20)
layout_mode = 2
[node name="ResumeBtn" type="Button" parent="PauseMenu/Panel/VBox"]
custom_minimum_size = Vector2(200, 45)
layout_mode = 2
text = "Resume"
[node name="SettingsBtn" type="Button" parent="PauseMenu/Panel/VBox"]
custom_minimum_size = Vector2(200, 45)
layout_mode = 2
text = "Settings"
[node name="QuitBtn" type="Button" parent="PauseMenu/Panel/VBox"]
custom_minimum_size = Vector2(200, 45)
layout_mode = 2
text = "Quit Match"
[node name="SettingsPanel" type="CanvasLayer" parent="."]
process_mode = 3
layer = 11
visible = false
[node name="Background" type="ColorRect" parent="SettingsPanel"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0, 0, 0, 0.8)
[node name="Panel" type="PanelContainer" parent="SettingsPanel"]
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -200.0
offset_top = -200.0
offset_right = 200.0
offset_bottom = 200.0
grow_horizontal = 2
grow_vertical = 2
[node name="VBox" type="VBoxContainer" parent="SettingsPanel/Panel"]
layout_mode = 2
theme_override_constants/separation = 12
alignment = 1
[node name="Title" type="Label" parent="SettingsPanel/Panel/VBox"]
layout_mode = 2
theme_override_font_sizes/font_size = 22
text = "Settings"
horizontal_alignment = 1
[node name="Spacer" type="Control" parent="SettingsPanel/Panel/VBox"]
custom_minimum_size = Vector2(0, 10)
layout_mode = 2
[node name="TouchHeader" type="Label" parent="SettingsPanel/Panel/VBox"]
layout_mode = 2
theme_override_font_sizes/font_size = 16
text = "Touch Controls"
[node name="ButtonSizeRow" type="HBoxContainer" parent="SettingsPanel/Panel/VBox"]
layout_mode = 2
[node name="Label" type="Label" parent="SettingsPanel/Panel/VBox/ButtonSizeRow"]
layout_mode = 2
size_flags_horizontal = 3
text = "Button Size"
[node name="ButtonSizeSlider" type="HSlider" parent="SettingsPanel/Panel/VBox/ButtonSizeRow"]
custom_minimum_size = Vector2(150, 0)
layout_mode = 2
min_value = 50.0
max_value = 120.0
value = 70.0
[node name="OpacityRow" type="HBoxContainer" parent="SettingsPanel/Panel/VBox"]
layout_mode = 2
[node name="Label" type="Label" parent="SettingsPanel/Panel/VBox/OpacityRow"]
layout_mode = 2
size_flags_horizontal = 3
text = "Button Opacity"
[node name="OpacitySlider" type="HSlider" parent="SettingsPanel/Panel/VBox/OpacityRow"]
custom_minimum_size = Vector2(150, 0)
layout_mode = 2
max_value = 1.0
step = 0.1
value = 0.7
[node name="JoystickToggle" type="CheckButton" parent="SettingsPanel/Panel/VBox"]
layout_mode = 2
button_pressed = true
text = "Enable Virtual Joystick"
[node name="Spacer2" type="Control" parent="SettingsPanel/Panel/VBox"]
custom_minimum_size = Vector2(0, 15)
layout_mode = 2
[node name="BackBtn" type="Button" parent="SettingsPanel/Panel/VBox"]
custom_minimum_size = Vector2(0, 40)
layout_mode = 2
text = "Back"
[connection signal="pressed" from="Menu/Host" to="." method="_on_host_pressed"]
[connection signal="pressed" from="Menu/Join" to="." method="_on_join_pressed"]
[connection signal="text_submitted" from="MessageInput" to="." method="_on_message_input_text_submitted"]
[connection signal="pressed" from="PauseMenu/Panel/VBox/ResumeBtn" to="." method="_on_resume_pressed"]
[connection signal="pressed" from="PauseMenu/Panel/VBox/SettingsBtn" to="." method="_on_settings_pressed"]
[connection signal="pressed" from="PauseMenu/Panel/VBox/QuitBtn" to="." method="_on_quit_match_pressed"]
[connection signal="value_changed" from="SettingsPanel/Panel/VBox/ButtonSizeRow/ButtonSizeSlider" to="." method="_on_button_size_changed"]
[connection signal="value_changed" from="SettingsPanel/Panel/VBox/OpacityRow/OpacitySlider" to="." method="_on_opacity_changed"]
[connection signal="toggled" from="SettingsPanel/Panel/VBox/JoystickToggle" to="." method="_on_joystick_toggled"]
[connection signal="pressed" from="SettingsPanel/Panel/VBox/BackBtn" to="." method="_on_settings_back_pressed"]