feat(character): add AnimatedSprite2D, OutfitLayers, HandSlots, SnapReceiver to Character scene

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Steven Wroblewski
2026-05-08 21:59:30 +02:00
parent 80cecf732d
commit 2c576ad419
2 changed files with 65 additions and 1 deletions
+26 -1
View File
@@ -1,7 +1,8 @@
[gd_scene load_steps=4 format=3 uid="uid://cozypaw_char"] [gd_scene load_steps=5 format=3 uid="uid://cozypaw_char"]
[ext_resource type="Script" path="res://scripts/characters/character.gd" id="1_char"] [ext_resource type="Script" path="res://scripts/characters/character.gd" id="1_char"]
[ext_resource type="Script" path="res://scripts/systems/drag_drop_component.gd" id="2_drag"] [ext_resource type="Script" path="res://scripts/systems/drag_drop_component.gd" id="2_drag"]
[ext_resource type="Script" path="res://scripts/characters/snap_receiver.gd" id="3_snap_recv"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_char"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_char"]
size = Vector2(64, 80) size = Vector2(64, 80)
@@ -49,3 +50,27 @@ input_pickable = true
[node name="CollisionShape" type="CollisionShape2D" parent="CollisionArea"] [node name="CollisionShape" type="CollisionShape2D" parent="CollisionArea"]
shape = SubResource("RectangleShape2D_char") shape = SubResource("RectangleShape2D_char")
position = Vector2(0, -40) position = Vector2(0, -40)
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
visible = false
[node name="OutfitLayer1" type="Sprite2D" parent="."]
position = Vector2(0, -40)
visible = false
[node name="OutfitLayer2" type="Sprite2D" parent="."]
position = Vector2(0, -40)
visible = false
[node name="OutfitLayer3" type="Sprite2D" parent="."]
position = Vector2(0, -40)
visible = false
[node name="HandLeft" type="Node2D" parent="."]
position = Vector2(-32, -30)
[node name="HandRight" type="Node2D" parent="."]
position = Vector2(32, -30)
[node name="SnapReceiver" type="Node" parent="."]
script = ExtResource("3_snap_recv")
+39
View File
@@ -0,0 +1,39 @@
## Tests for Character System v2 — animation state, outfit layers, hand slots.
extends GutTest
var _char: Character
func before_each() -> void:
_char = preload("res://scenes/characters/Character.tscn").instantiate() as Character
add_child_autofree(_char)
var cd: CharacterData = CharacterData.new()
_char.data = cd
func test_animated_sprite_node_exists() -> void:
assert_not_null(_char.get_node_or_null("AnimatedSprite2D"))
func test_outfit_layer_1_node_exists() -> void:
assert_not_null(_char.get_node_or_null("OutfitLayer1"))
func test_outfit_layer_2_node_exists() -> void:
assert_not_null(_char.get_node_or_null("OutfitLayer2"))
func test_outfit_layer_3_node_exists() -> void:
assert_not_null(_char.get_node_or_null("OutfitLayer3"))
func test_hand_left_node_exists() -> void:
assert_not_null(_char.get_node_or_null("HandLeft"))
func test_hand_right_node_exists() -> void:
assert_not_null(_char.get_node_or_null("HandRight"))
func test_snap_receiver_node_exists() -> void:
assert_not_null(_char.get_node_or_null("SnapReceiver"))