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

@@ -0,0 +1,66 @@
[gd_scene load_steps=4 format=3 uid="uid://himb0o6py5pt"]
[ext_resource type="Script" uid="uid://b3torx8lbkrj7" path="res://scenes/ui_controls/base_ui.gd" id="1_4moq4"]
[ext_resource type="PackedScene" uid="uid://l3bve6miq8od" path="res://scenes/ui_controls/game/data.tscn" id="1_ff2ky"]
[ext_resource type="PackedScene" uid="uid://w3vh1gj6t2k2" path="res://scenes/ui_controls/camera/camera_controller.tscn" id="2_4moq4"]
[node name="base_ui" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_4moq4")
[node name="panel" type="Panel" parent="."]
visible = false
z_index = 10
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -400.0
offset_top = -300.0
offset_right = 400.0
offset_bottom = 300.0
grow_horizontal = 2
grow_vertical = 2
[node name="win_message_lbl" type="RichTextLabel" parent="panel"]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -240.0
offset_top = -160.0
offset_right = 240.0
offset_bottom = 160.0
grow_horizontal = 2
grow_vertical = 2
scroll_active = false
autowrap_mode = 0
shortcut_keys_enabled = false
horizontal_alignment = 1
vertical_alignment = 1
[node name="game_data" parent="." instance=ExtResource("1_ff2ky")]
z_index = 5
layout_mode = 1
[node name="camera_controller" parent="." instance=ExtResource("2_4moq4")]
z_index = 5
layout_mode = 1
[node name="camera1" type="Camera3D" parent="camera_controller"]
transform = Transform3D(-4.371139e-08, 1, 4.371139e-08, 0, -4.371139e-08, 1, 1, 4.371139e-08, 1.9106855e-15, 0, 1.8, 0)
[node name="camera2" type="Camera3D" parent="camera_controller"]
transform = Transform3D(0.03457907, -0.3120391, -0.9494398, 0, 0.9500079, -0.31222585, 0.999402, 0.010796479, 0.03285039, -0.35511678, 0.79579777, -0.83073556)
[node name="cue_cam" type="Camera3D" parent="camera_controller"]
transform = Transform3D(1, 0, 0, 0, 1.0000001, 0, 0, 0, 1.0000001, 0, 0, 0)