feat: Introduce modular player system with dedicated managers for movement, race, input, playerboard, actions, special tiles, and powerups, along with a new main scene and documentation.

This commit is contained in:
2025-12-16 02:37:26 +08:00
parent 96f5754f99
commit e41ffcfb67
9 changed files with 494 additions and 146 deletions
+179
View File
@@ -9324,6 +9324,185 @@ theme_override_constants/margin_bottom = 5
layout_mode = 2
theme_override_constants/separation = 4
[node name="PowerUpBar" type="PanelContainer" parent="."]
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -110.0
offset_top = 125.0
offset_right = 110.0
offset_bottom = 161.0
grow_horizontal = 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 = 14
text = "POWER "
[node name="Segment0" type="Panel" parent="PowerUpBar/HBox"]
custom_minimum_size = Vector2(36, 20)
layout_mode = 2
[node name="Segment1" type="Panel" parent="PowerUpBar/HBox"]
custom_minimum_size = Vector2(36, 20)
layout_mode = 2
[node name="Segment2" type="Panel" parent="PowerUpBar/HBox"]
custom_minimum_size = Vector2(36, 20)
layout_mode = 2
[node name="Segment3" type="Panel" parent="PowerUpBar/HBox"]
custom_minimum_size = Vector2(36, 20)
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
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
[node name="VBox" type="VBoxContainer" parent="LeaderboardPanel/MarginContainer"]
layout_mode = 2
theme_override_constants/separation = 4
[node name="Title" type="Label" parent="LeaderboardPanel/MarginContainer/VBox"]
layout_mode = 2
theme_override_font_sizes/font_size = 16
text = "🏆 LEADERBOARD"
horizontal_alignment = 1
[node name="Separator" type="HSeparator" parent="LeaderboardPanel/MarginContainer/VBox"]
layout_mode = 2
[node name="Entry1" type="HBoxContainer" parent="LeaderboardPanel/MarginContainer/VBox"]
layout_mode = 2
[node name="RankLabel" type="Label" parent="LeaderboardPanel/MarginContainer/VBox/Entry1"]
custom_minimum_size = Vector2(35, 0)
layout_mode = 2
theme_override_font_sizes/font_size = 14
text = "1st"
[node name="NameLabel" type="Label" parent="LeaderboardPanel/MarginContainer/VBox/Entry1"]
custom_minimum_size = Vector2(100, 0)
layout_mode = 2
theme_override_font_sizes/font_size = 14
text = "Player 1"
clip_text = true
[node name="ScoreLabel" type="Label" parent="LeaderboardPanel/MarginContainer/VBox/Entry1"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 14
text = "0"
horizontal_alignment = 2
[node name="Entry2" type="HBoxContainer" parent="LeaderboardPanel/MarginContainer/VBox"]
layout_mode = 2
[node name="RankLabel" type="Label" parent="LeaderboardPanel/MarginContainer/VBox/Entry2"]
custom_minimum_size = Vector2(35, 0)
layout_mode = 2
theme_override_font_sizes/font_size = 14
text = "2nd"
[node name="NameLabel" type="Label" parent="LeaderboardPanel/MarginContainer/VBox/Entry2"]
custom_minimum_size = Vector2(100, 0)
layout_mode = 2
theme_override_font_sizes/font_size = 14
text = "Player 2"
clip_text = true
[node name="ScoreLabel" type="Label" parent="LeaderboardPanel/MarginContainer/VBox/Entry2"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 14
text = "0"
horizontal_alignment = 2
[node name="Entry3" type="HBoxContainer" parent="LeaderboardPanel/MarginContainer/VBox"]
layout_mode = 2
[node name="RankLabel" type="Label" parent="LeaderboardPanel/MarginContainer/VBox/Entry3"]
custom_minimum_size = Vector2(35, 0)
layout_mode = 2
theme_override_font_sizes/font_size = 14
text = "3rd"
[node name="NameLabel" type="Label" parent="LeaderboardPanel/MarginContainer/VBox/Entry3"]
custom_minimum_size = Vector2(100, 0)
layout_mode = 2
theme_override_font_sizes/font_size = 14
text = "Player 3"
clip_text = true
[node name="ScoreLabel" type="Label" parent="LeaderboardPanel/MarginContainer/VBox/Entry3"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 14
text = "0"
horizontal_alignment = 2
[node name="Entry4" type="HBoxContainer" parent="LeaderboardPanel/MarginContainer/VBox"]
layout_mode = 2
[node name="RankLabel" type="Label" parent="LeaderboardPanel/MarginContainer/VBox/Entry4"]
custom_minimum_size = Vector2(35, 0)
layout_mode = 2
theme_override_font_sizes/font_size = 14
text = "4th"
[node name="NameLabel" type="Label" parent="LeaderboardPanel/MarginContainer/VBox/Entry4"]
custom_minimum_size = Vector2(100, 0)
layout_mode = 2
theme_override_font_sizes/font_size = 14
text = "Player 4"
clip_text = true
[node name="ScoreLabel" type="Label" parent="LeaderboardPanel/MarginContainer/VBox/Entry4"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 14
text = "0"
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
[node name="VBox" type="VBoxContainer" parent="GoalsTimer"]
layout_mode = 2
alignment = 1
[node name="TimerLabel" type="Label" parent="GoalsTimer/VBox"]
layout_mode = 2
theme_override_font_sizes/font_size = 32
text = "60"
horizontal_alignment = 1
[node name="SuffixLabel" type="Label" parent="GoalsTimer/VBox"]
layout_mode = 2
theme_override_font_sizes/font_size = 12
text = "seconds"
horizontal_alignment = 1
[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"]