feat: Implement a new lobby system with configurable match duration, game over screen, and core game state management.

This commit is contained in:
2025-12-20 01:10:49 +08:00
parent 75eb398649
commit b0d45d4569
12 changed files with 1241 additions and 338 deletions
+88 -82
View File
@@ -23,6 +23,22 @@
[ext_resource type="StyleBox" uid="uid://cdhnwvcklbyl8" path="res://assets/styles/ribbon_hovered_gui.tres" id="19_w1rqq"]
[ext_resource type="StyleBox" uid="uid://3yog1weaqhxb" path="res://assets/styles/ribbon_unselected_gui.tres" id="20_q6bc1"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_playerboard"]
content_margin_left = 8.0
content_margin_top = 8.0
content_margin_right = 8.0
content_margin_bottom = 8.0
bg_color = Color(0.08, 0.08, 0.12, 0.9)
border_width_left = 1
border_width_top = 1
border_width_right = 1
border_width_bottom = 1
border_color = Color(0.3, 0.3, 0.4, 0.8)
corner_radius_top_left = 8
corner_radius_top_right = 8
corner_radius_bottom_right = 8
corner_radius_bottom_left = 8
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_1cewu"]
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_5oeq4"]
@@ -30,22 +46,6 @@ texture = ExtResource("13_ahjgs")
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_s1l63"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_playerboard"]
bg_color = Color(0.08, 0.08, 0.12, 0.9)
border_color = Color(0.3, 0.3, 0.4, 0.8)
border_width_left = 1
border_width_top = 1
border_width_right = 1
border_width_bottom = 1
corner_radius_top_left = 8
corner_radius_top_right = 8
corner_radius_bottom_right = 8
corner_radius_bottom_left = 8
content_margin_left = 8.0
content_margin_top = 8.0
content_margin_right = 8.0
content_margin_bottom = 8.0
[node name="Main" type="Node3D"]
script = ExtResource("1_xcpe3")
@@ -77,26 +77,31 @@ fov = 35.5
size = 23.0
[node name="NetworkPanel" type="Panel" parent="."]
anchors_preset = 4
anchor_top = 0.5
anchor_bottom = 0.5
offset_left = 1208.0
offset_top = 280.0
offset_right = 1344.0
offset_bottom = 333.0
grow_vertical = 2
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="VBoxContainer" parent="NetworkPanel"]
layout_mode = 0
offset_left = 8.0
offset_right = 124.0
offset_bottom = 50.0
[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
@@ -108,10 +113,10 @@ vertical_alignment = 1
anchors_preset = 4
anchor_top = 0.5
anchor_bottom = 0.5
offset_left = 10.0
offset_top = -120.0
offset_right = 216.0
offset_bottom = 120.0
offset_left = 19.0
offset_top = -233.0
offset_right = 232.0
offset_bottom = 7.0
grow_vertical = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_playerboard")
@@ -120,10 +125,10 @@ clip_contents = true
anchors_preset = 4
anchor_top = 0.5
anchor_bottom = 0.5
offset_left = 18.0
offset_top = -88.0
offset_right = 208.0
offset_bottom = 102.0
offset_left = 28.0
offset_top = -199.0
offset_right = 224.0
offset_bottom = -3.0
grow_vertical = 2
size_flags_horizontal = 3
columns = 5
@@ -978,7 +983,43 @@ grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("9_6gcb6")
[node name="PowerUpBar" type="PanelContainer" parent="."]
anchors_preset = 4
anchor_top = 0.5
anchor_bottom = 0.5
offset_left = 29.0
offset_top = -228.0
offset_right = 149.0
offset_bottom = -202.0
grow_vertical = 2
[node name="HBox" type="HBoxContainer" parent="PowerUpBar"]
layout_mode = 2
theme_override_constants/separation = 4
[node name="PowerLabel" type="Label" parent="PowerUpBar/HBox"]
layout_mode = 2
theme_override_font_sizes/font_size = 18
text = "⚡"
[node name="Segment0" type="Panel" parent="PowerUpBar/HBox"]
custom_minimum_size = Vector2(20, 16)
layout_mode = 2
[node name="Segment1" type="Panel" parent="PowerUpBar/HBox"]
custom_minimum_size = Vector2(20, 16)
layout_mode = 2
[node name="Segment2" type="Panel" parent="PowerUpBar/HBox"]
custom_minimum_size = Vector2(20, 16)
layout_mode = 2
[node name="Segment3" type="Panel" parent="PowerUpBar/HBox"]
custom_minimum_size = Vector2(20, 16)
layout_mode = 2
[node name="ActionMenu" type="Control" parent="."]
visible = false
layout_mode = 3
anchors_preset = 3
anchor_left = 1.0
@@ -9334,9 +9375,9 @@ anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -200.0
offset_top = -99.0
offset_top = -87.0
offset_right = 200.0
offset_bottom = -41.0
offset_bottom = -53.0
grow_horizontal = 2
grow_vertical = 0
theme_override_styles/panel = ExtResource("5_dvx6y")
@@ -9352,57 +9393,22 @@ theme_override_constants/margin_bottom = 5
layout_mode = 2
theme_override_constants/separation = 4
[node name="PowerUpBar" type="PanelContainer" parent="."]
anchors_preset = 4
anchor_top = 0.5
anchor_bottom = 0.5
offset_left = 18.0
offset_top = -115.0
offset_right = 110.0
offset_bottom = -92.0
grow_vertical = 2
[node name="HBox" type="HBoxContainer" parent="PowerUpBar"]
layout_mode = 2
theme_override_constants/separation = 4
[node name="PowerLabel" type="Label" parent="PowerUpBar/HBox"]
layout_mode = 2
theme_override_font_sizes/font_size = 18
text = "⚡"
[node name="Segment0" type="Panel" parent="PowerUpBar/HBox"]
custom_minimum_size = Vector2(20, 16)
layout_mode = 2
[node name="Segment1" type="Panel" parent="PowerUpBar/HBox"]
custom_minimum_size = Vector2(20, 16)
layout_mode = 2
[node name="Segment2" type="Panel" parent="PowerUpBar/HBox"]
custom_minimum_size = Vector2(20, 16)
layout_mode = 2
[node name="Segment3" type="Panel" parent="PowerUpBar/HBox"]
custom_minimum_size = Vector2(20, 16)
layout_mode = 2
[node name="LeaderboardPanel" type="PanelContainer" parent="."]
anchors_preset = 1
anchor_left = 1.0
anchor_right = 1.0
offset_left = -210.0
offset_top = 80.0
offset_right = -10.0
offset_bottom = 280.0
offset_left = -218.0
offset_top = 15.0
offset_right = -18.0
offset_bottom = 215.0
grow_horizontal = 0
[node name="MarginContainer" type="MarginContainer" parent="LeaderboardPanel"]
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
theme_override_constants/margin_left = 18
theme_override_constants/margin_top = 18
theme_override_constants/margin_right = 18
theme_override_constants/margin_bottom = 18
[node name="VBox" type="VBoxContainer" parent="LeaderboardPanel/MarginContainer"]
layout_mode = 2