|
@ -9,9 +9,10 @@ signal item_dropped(item: DBItemResource) |
|
|
signal inventory_opened |
|
|
signal inventory_opened |
|
|
signal inventory_closed |
|
|
signal inventory_closed |
|
|
|
|
|
|
|
|
signal clear_inventory |
|
|
|
|
|
|
|
|
signal clear_inventory ## Remove all items in inventory |
|
|
signal add_to_inventory(item_id: String, amount: int) |
|
|
signal add_to_inventory(item_id: String, amount: int) |
|
|
signal remove_from_inventory(item_id: String, amount: int) |
|
|
signal remove_from_inventory(item_id: String, amount: int) |
|
|
|
|
|
signal remove_from_slot(slot_index: int, amount: int) |
|
|
signal item_added(item_id: String, amount: int) |
|
|
signal item_added(item_id: String, amount: int) |
|
|
signal item_removed(item_id: String, amount: int) |
|
|
signal item_removed(item_id: String, amount: int) |
|
|
signal inventory_slot_updated(slot_index: int) |
|
|
signal inventory_slot_updated(slot_index: int) |
|
@ -30,11 +31,10 @@ func _ready() -> void: |
|
|
self.item_dropped.connect(_on_item_dropped) |
|
|
self.item_dropped.connect(_on_item_dropped) |
|
|
|
|
|
|
|
|
self.add_to_inventory.connect(_on_add_to_inventory) |
|
|
self.add_to_inventory.connect(_on_add_to_inventory) |
|
|
self.remove_from_inventory.connect(_on_remove_from_inventory) |
|
|
|
|
|
self.clear_inventory.connect(_on_clear_inventory) |
|
|
self.clear_inventory.connect(_on_clear_inventory) |
|
|
self.quick_slot_selected.connect(_on_quick_slot_selected) |
|
|
self.quick_slot_selected.connect(_on_quick_slot_selected) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
self.remove_from_inventory.connect(_on_remove_from_inventory) |
|
|
|
|
|
self.remove_from_slot.connect(_on_remove_from_slot) |
|
|
|
|
|
|
|
|
func available_space(item_id: String) -> int: |
|
|
func available_space(item_id: String) -> int: |
|
|
var full_stacks: int = floor(_inventory_cache[item_id].total / DBItems.data[item_id].max_stack_size) |
|
|
var full_stacks: int = floor(_inventory_cache[item_id].total / DBItems.data[item_id].max_stack_size) |
|
@ -166,3 +166,16 @@ func _on_item_picked_up(item: DBItemResource) -> void: |
|
|
|
|
|
|
|
|
func _on_quick_slot_selected(slot_index: int) -> void: |
|
|
func _on_quick_slot_selected(slot_index: int) -> void: |
|
|
selected_quick_slot = slot_index |
|
|
selected_quick_slot = slot_index |
|
|
|
|
|
|
|
|
|
|
|
## Removes an amount of items from a specific slot |
|
|
|
|
|
## If the amount exceeds the amount of the slot, will NOT remove from other stacks |
|
|
|
|
|
func _on_remove_from_slot(slot_index: int, amount: int) -> void: |
|
|
|
|
|
if slot_index >= max_inventory_items: |
|
|
|
|
|
printerr("Slot Index ", slot_index, " out of inventory range") |
|
|
|
|
|
return |
|
|
|
|
|
|
|
|
|
|
|
inventory[slot_index].amount -= amount |
|
|
|
|
|
if inventory[slot_index].amount <= 0: |
|
|
|
|
|
inventory[slot_index] = null |
|
|
|
|
|
|
|
|
|
|
|
inventory_slot_updated.emit(slot_index) |