Make decor occupy individual inventory slots

This commit is contained in:
Alexander Sellite 2026-09-01 17:29:57 -04:00
parent f2239d248a
commit 4196cda1d5
9 changed files with 516 additions and 79 deletions

View file

@ -55,6 +55,31 @@ func _run() -> void:
assert(bag.move_item_to_storage_slot(&"worms", shrimp_slot))
assert(bag.get_storage_slot(&"worms") == shrimp_slot)
assert(bag.get_storage_slot(&"shrimp") == worms_slot)
# Exhausting bait removes its owned record while retaining the unlock. A
# later refill therefore receives whichever inventory slot happens to be free
# at that moment. The tackle page must keep catalog order instead of exposing
# that incidental refill order.
for item_id: StringName in EXPECTED_BAIT_ORDER:
if bag.get_quantity(item_id) == 0:
assert(bag.add_item(item_id, 1))
for item_id: StringName in EXPECTED_BAIT_ORDER:
assert(bag.remove_item(item_id, 1))
var reverse_refill_order: Array[StringName] = EXPECTED_BAIT_ORDER.duplicate()
reverse_refill_order.reverse()
for item_id: StringName in reverse_refill_order:
assert(bag.add_item(item_id, 1))
var refilled_items: Array[OwnedItem] = bag.get_unlocked_bait_items()
refilled_items.sort_custom(
func(first: OwnedItem, second: OwnedItem) -> bool:
return bool(player_menu.call(
"_sort_tackle_items", first, second
))
)
var refilled_ids: Array[StringName] = []
for owned: OwnedItem in refilled_items:
refilled_ids.append(owned.item_id)
assert(refilled_ids == EXPECTED_BAIT_ORDER)
bag.free()
player_menu.free()
print("Tackle order validation: PASS")