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:
@@ -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")
|
||||||
|
|||||||
@@ -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"))
|
||||||
Reference in New Issue
Block a user