feat(character): add hand slot API (attach/detach/get_held_item/is_hand_free)
This commit is contained in:
@@ -112,3 +112,60 @@ func test_set_outfit_invalid_layer_zero_is_noop() -> void:
|
||||
func test_set_outfit_invalid_layer_four_is_noop() -> void:
|
||||
_char.set_outfit(4, "white_coat", null)
|
||||
assert_eq(_char.get_outfit(3), "")
|
||||
|
||||
|
||||
func test_both_hands_free_initially() -> void:
|
||||
assert_true(_char.is_hand_free("left"))
|
||||
assert_true(_char.is_hand_free("right"))
|
||||
|
||||
|
||||
func test_attach_item_to_left_hand() -> void:
|
||||
var item: Node2D = Node2D.new()
|
||||
add_child_autofree(item)
|
||||
_char.attach_item("left", item)
|
||||
assert_false(_char.is_hand_free("left"))
|
||||
|
||||
|
||||
func test_get_held_item_returns_attached_item() -> void:
|
||||
var item: Node2D = Node2D.new()
|
||||
add_child_autofree(item)
|
||||
_char.attach_item("right", item)
|
||||
assert_eq(_char.get_held_item("right"), item)
|
||||
|
||||
|
||||
func test_attach_to_occupied_hand_returns_false() -> void:
|
||||
var item1: Node2D = Node2D.new()
|
||||
var item2: Node2D = Node2D.new()
|
||||
add_child_autofree(item1)
|
||||
add_child_autofree(item2)
|
||||
_char.attach_item("left", item1)
|
||||
var result: bool = _char.attach_item("left", item2)
|
||||
assert_false(result)
|
||||
|
||||
|
||||
func test_attach_returns_true_on_success() -> void:
|
||||
var item: Node2D = Node2D.new()
|
||||
add_child_autofree(item)
|
||||
var result: bool = _char.attach_item("right", item)
|
||||
assert_true(result)
|
||||
|
||||
|
||||
func test_detach_item_frees_hand() -> void:
|
||||
var item: Node2D = Node2D.new()
|
||||
add_child_autofree(item)
|
||||
_char.attach_item("left", item)
|
||||
_char.detach_item("left")
|
||||
assert_true(_char.is_hand_free("left"))
|
||||
|
||||
|
||||
func test_detach_returns_item() -> void:
|
||||
var item: Node2D = Node2D.new()
|
||||
add_child_autofree(item)
|
||||
_char.attach_item("right", item)
|
||||
var returned: Node2D = _char.detach_item("right")
|
||||
assert_eq(returned, item)
|
||||
|
||||
|
||||
func test_detach_from_empty_hand_returns_null() -> void:
|
||||
var returned: Node2D = _char.detach_item("left")
|
||||
assert_null(returned)
|
||||
|
||||
Reference in New Issue
Block a user