extends Resource class_name Inventory signal inventory_changed(inventory: Inventory) @export var items: Array[GenericItem] = [] @export var max_items: int = 10 func add_item(item: GenericItem): if items.size() < max_items: items.append(item) emit_signal("inventory_changed", self) return true else: return false func add_items(items_to_add: Array[GenericItem], fillup: bool = false): if fillup: var has_changed := false for i in min(items_to_add.size(), max_items - items.size()): items.append(items_to_add[i]) has_changed = true if has_changed: emit_signal("inventory_changed", self) return has_changed elif !fillup && items.size() + items_to_add.size() < max_items: items.append_array(items_to_add) emit_signal("inventory_changed", self) return true func get_item(ind: int = 0): return items[ind] func get_and_remove_item(ind: int = 0): var item_removed: GenericItem = items.pop_at(ind) emit_signal("inventory_changed", self) return item_removed func swap_items(item_to_add: GenericItem, ind_to_get: int = 0): var item_to_get := items[ind_to_get] items[ind_to_get] = item_to_add emit_signal("inventory_changed", self) return item_to_get