Refactor game mode scoring and win conditions

* Add overridable hooks for sunk/reaped ball handling and turn behavior.
* Implement default scoring and game-over messaging across game modes.
* Add pretty game mode names for win-condition messages.
* Update Free Ball, Last Ball, and Snooker modes to return win-condition messages.
* Move the reset button lookup to the scene root for multiplayer setup.
* Move camera controller scene to shared base UI. Move parts of it to new game_data UI node.
* Add commented test state generation for end-state testing.
This commit is contained in:
2026-08-14 03:38:04 -05:00
parent 034ba45859
commit ed6f243b93
16 changed files with 298 additions and 125 deletions

View File

@@ -22,7 +22,7 @@ func setup_multiplayer() -> void:
if not Globals.multiplayer_data.is_multiplayer_active: return
Globals.game_state.reload_scene.disconnect(_reload_scene)
$camera_controller.find_child("reset_bttn", true, false).queue_free()
get_tree().root.find_child("reset_bttn", true, false).queue_free()
func _reload_scene() -> void:
Globals.game_state.set_game_scene("res://scenes/game.tscn")