feat(snap-points): add SnapPoints to all 2.OG and Garten rooms (Ultrasound, DeliveryRoom, Nursery, GardenParty)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Steven Wroblewski
2026-05-08 22:40:45 +02:00
parent 8cae50bc11
commit 0d3788246a
5 changed files with 126 additions and 4 deletions
+7 -1
View File
@@ -1,7 +1,8 @@
[gd_scene load_steps=3 format=3 uid="uid://cozypaw_deliveryroom"]
[gd_scene load_steps=4 format=3 uid="uid://cozypaw_deliveryroom"]
[ext_resource type="PackedScene" path="res://scenes/objects/InteractiveObject.tscn" id="1_iobj"]
[ext_resource type="PackedScene" path="res://scenes/objects/DeliveryBed.tscn" id="2_deliverybed"]
[ext_resource type="Script" path="res://scripts/objects/snap_point.gd" id="3_snap"]
[node name="DeliveryRoom" type="Node2D"]
@@ -36,3 +37,8 @@ position = Vector2(1020, 540)
[node name="BabyBlanket" parent="." instance=ExtResource("1_iobj")]
position = Vector2(880, 540)
[node name="SnapDeliveryBed" type="Node2D" parent="."]
position = Vector2(540, 480)
script = ExtResource("3_snap")
pose = "lying"
+20 -1
View File
@@ -1,7 +1,8 @@
[gd_scene load_steps=3 format=3 uid="uid://cozypaw_nursery"]
[gd_scene load_steps=4 format=3 uid="uid://cozypaw_nursery"]
[ext_resource type="PackedScene" path="res://scenes/objects/InteractiveObject.tscn" id="1_iobj"]
[ext_resource type="PackedScene" path="res://scenes/objects/Cradle.tscn" id="2_cradle"]
[ext_resource type="Script" path="res://scripts/objects/snap_point.gd" id="3_snap"]
[node name="Nursery" type="Node2D"]
@@ -47,3 +48,21 @@ position = Vector2(1100, 540)
[node name="MilkBottle" parent="." instance=ExtResource("1_iobj")]
position = Vector2(960, 540)
[node name="SnapCradle1" type="Node2D" parent="."]
position = Vector2(340, 240)
script = ExtResource("3_snap")
pose = "lying"
baby_only = true
[node name="SnapCradle2" type="Node2D" parent="."]
position = Vector2(600, 240)
script = ExtResource("3_snap")
pose = "lying"
baby_only = true
[node name="SnapCradle3" type="Node2D" parent="."]
position = Vector2(860, 240)
script = ExtResource("3_snap")
pose = "lying"
baby_only = true
+7 -1
View File
@@ -1,7 +1,8 @@
[gd_scene load_steps=3 format=3 uid="uid://cozypaw_ultrasound"]
[gd_scene load_steps=4 format=3 uid="uid://cozypaw_ultrasound"]
[ext_resource type="PackedScene" path="res://scenes/objects/InteractiveObject.tscn" id="1_iobj"]
[ext_resource type="PackedScene" path="res://scenes/objects/UltrasoundMachine.tscn" id="2_ultrasound"]
[ext_resource type="Script" path="res://scripts/objects/snap_point.gd" id="3_snap"]
[node name="Ultrasound" type="Node2D"]
@@ -51,3 +52,8 @@ position = Vector2(920, 450)
[node name="Blanket" parent="." instance=ExtResource("1_iobj")]
position = Vector2(480, 450)
[node name="SnapExamTable" type="Node2D" parent="."]
position = Vector2(470, 480)
script = ExtResource("3_snap")
pose = "lying"
+10 -1
View File
@@ -1,8 +1,9 @@
[gd_scene load_steps=4 format=3 uid="uid://cozypaw_gardenparty"]
[gd_scene load_steps=5 format=3 uid="uid://cozypaw_gardenparty"]
[ext_resource type="PackedScene" path="res://scenes/objects/GiftBox.tscn" id="1_giftbox"]
[ext_resource type="PackedScene" path="res://scenes/objects/TeaPot.tscn" id="2_teapot"]
[ext_resource type="PackedScene" path="res://scenes/objects/HomeButton.tscn" id="3_homebtn"]
[ext_resource type="Script" path="res://scripts/objects/snap_point.gd" id="4_snap"]
[node name="GardenParty" type="Node2D"]
@@ -84,3 +85,11 @@ color = Color(0.56, 0.76, 0.96, 1)
[node name="HomeButtonReturn" parent="." instance=ExtResource("3_homebtn")]
position = Vector2(100, 620)
go_to_garden = false
[node name="SnapTableLeft" type="Node2D" parent="."]
position = Vector2(530, 455)
script = ExtResource("4_snap")
[node name="SnapTableRight" type="Node2D" parent="."]
position = Vector2(750, 455)
script = ExtResource("4_snap")
+82
View File
@@ -0,0 +1,82 @@
## Tests verifying SnapPoints exist in all 2.OG and Garten room scenes.
extends GutTest
func _count_snaps(room: Node2D) -> int:
var count: int = 0
for child: Node in room.get_children():
if child is SnapPoint:
count += 1
return count
func _count_snaps_with_pose(room: Node2D, pose: String) -> int:
var count: int = 0
for child: Node in room.get_children():
var snap: SnapPoint = child as SnapPoint
if snap != null and snap.pose == pose:
count += 1
return count
func _count_snaps_baby_only(room: Node2D) -> int:
var count: int = 0
for child: Node in room.get_children():
var snap: SnapPoint = child as SnapPoint
if snap != null and snap.baby_only:
count += 1
return count
func test_ultrasound_has_one_snap_point() -> void:
var room: Node2D = preload("res://scenes/rooms/floor2/Ultrasound.tscn").instantiate() as Node2D
add_child_autofree(room)
assert_eq(_count_snaps(room), 1)
func test_ultrasound_snap_is_lying() -> void:
var room: Node2D = preload("res://scenes/rooms/floor2/Ultrasound.tscn").instantiate() as Node2D
add_child_autofree(room)
assert_eq(_count_snaps_with_pose(room, "lying"), 1)
func test_delivery_room_has_one_snap_point() -> void:
var room: Node2D = preload("res://scenes/rooms/floor2/DeliveryRoom.tscn").instantiate() as Node2D
add_child_autofree(room)
assert_eq(_count_snaps(room), 1)
func test_delivery_room_snap_is_lying() -> void:
var room: Node2D = preload("res://scenes/rooms/floor2/DeliveryRoom.tscn").instantiate() as Node2D
add_child_autofree(room)
assert_eq(_count_snaps_with_pose(room, "lying"), 1)
func test_nursery_has_three_snap_points() -> void:
var room: Node2D = preload("res://scenes/rooms/floor2/Nursery.tscn").instantiate() as Node2D
add_child_autofree(room)
assert_eq(_count_snaps(room), 3)
func test_nursery_all_snaps_are_baby_only() -> void:
var room: Node2D = preload("res://scenes/rooms/floor2/Nursery.tscn").instantiate() as Node2D
add_child_autofree(room)
assert_eq(_count_snaps_baby_only(room), 3)
func test_nursery_all_snaps_are_lying() -> void:
var room: Node2D = preload("res://scenes/rooms/floor2/Nursery.tscn").instantiate() as Node2D
add_child_autofree(room)
assert_eq(_count_snaps_with_pose(room, "lying"), 3)
func test_garden_party_has_two_snap_points() -> void:
var room: Node2D = preload("res://scenes/rooms/home/GardenParty.tscn").instantiate() as Node2D
add_child_autofree(room)
assert_eq(_count_snaps(room), 2)
func test_garden_party_all_snaps_are_sitting() -> void:
var room: Node2D = preload("res://scenes/rooms/home/GardenParty.tscn").instantiate() as Node2D
add_child_autofree(room)
assert_eq(_count_snaps_with_pose(room, "sitting"), 2)