feat(game): add free ball mode and improve ball state handling

* add Free Ball game mode and lobby selection
* refactor base mode ball state tracking for reaped/sunk balls
* add player ownership tracking and colored-ball support
* add initial 9-ball mode implementation
* update 8-ball and snooker modes to use base ball handling
* replicate ball linear velocity for multiplayer synchronization
* improve ball collision sound propagation and physics settings
* reenable game music and initialize game signals
* improve lobby input focus and mode selection behavior
* adjust cue impulse origin and default game mode
This commit is contained in:
2026-08-10 21:22:52 -05:00
parent 26dcfe0d1b
commit e3bdb21cd2
19 changed files with 234 additions and 62 deletions

View File

@@ -10,6 +10,23 @@ script = ExtResource("1_hhiik")
[node name="ui" parent="." instance=ExtResource("2_lqt48")]
[node name="host_address_input" parent="ui/body/left_body/server_host_hbox" index="1"]
context_menu_enabled = false
select_all_on_focus = true
[node name="host_port_range" parent="ui/body/left_body/server_host_hbox" index="2"]
select_all_on_focus = true
[node name="match_search_input" parent="ui/body/left_body/search_vbox/search_hbox" index="0"]
context_menu_enabled = false
[node name="right_body" parent="ui/body" index="1"]
visible = false
[node name="new_match_name_input" parent="ui/body/right_body/create_match_hbox" index="0"]
context_menu_enabled = false
select_all_on_focus = true
[node name="rpc_signals" type="Node" parent="."]
script = ExtResource("3_rurl6")
@@ -24,5 +41,6 @@ script = ExtResource("4_glu7g")
[connection signal="pressed" from="ui/body/right_body/vbox/8ball" to="." method="_on_mode_bttn_pressed" flags=18]
[connection signal="pressed" from="ui/body/right_body/vbox/9ball" to="." method="_on_mode_bttn_pressed" flags=18]
[connection signal="pressed" from="ui/body/right_body/vbox/snooker" to="." method="_on_mode_bttn_pressed" flags=18]
[connection signal="pressed" from="ui/body/right_body/vbox/free_ball" to="." method="_on_mode_bttn_pressed" flags=18]
[editable path="ui"]