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

@ -41,6 +41,7 @@ func _run() -> void:
assert(basic_cube != null)
assert(basic_cube.icon != null)
assert(basic_cube.hotbar_allowed)
assert(not basic_cube.stackable)
assert(bag.add_item(&"basic_cube"))
assert(layout.is_item_in_inventory(&"basic_cube"))
assert(hotbar.assign_item(0, &"basic_cube"))
@ -73,6 +74,40 @@ func _run() -> void:
assert(hotbar.get_selected_item_id() == &"basic_cube")
assert(bag.remove_item(&"basic_cube"))
# Decor ownership remains an aggregate count for persistence, but each
# physical piece receives its own movable inventory placement.
assert(bag.add_item(&"basic_cube", 3))
assert(bag.get_quantity(&"basic_cube") == 3)
assert(layout.get_inventory_count() == 3)
var decor_entries := layout.get_entries(
PlayerInventoryLayout.InventoryContainer.INVENTORY
)
assert(decor_entries.size() == 3)
var decor_keys: Dictionary[String, bool] = {}
for entry: Dictionary in decor_entries:
assert(StringName(str(entry.get("identity", ""))) == &"basic_cube")
assert(int(entry.get("unit", -1)) >= 0)
decor_keys[str(entry.get("key", ""))] = true
assert(decor_keys.size() == 3)
var moved_decor_key: String = str(decor_entries[1].get("key", ""))
assert(layout.move_entry_key_to_first_free(
moved_decor_key,
PlayerInventoryLayout.InventoryContainer.STORAGE,
))
assert(layout.get_inventory_count() == 2)
assert(layout.get_storage_count() == 1)
var decor_layout_save := layout.to_save_data()
assert(layout.move_entry_key_to_first_free(
moved_decor_key,
PlayerInventoryLayout.InventoryContainer.INVENTORY,
))
assert(layout.restore_from_save_data(decor_layout_save))
assert(layout.get_inventory_count() == 2)
assert(layout.get_storage_count() == 1)
assert(bag.remove_item(&"basic_cube", 3))
assert(layout.get_inventory_count() == 0)
assert(layout.get_storage_count() == 0)
assert(bag.add_item(&"coffee", 3))
assert(layout.get_inventory_count() == 1)
assert(layout.get_inventory_capacity() == 9)