A Minecraft style clone in Godot
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

49 lines
1.5 KiB

extends Node
signal next_quick_slot
signal previous_quick_slot
signal select_quick_slot(slot_index: int)
signal quick_slot_item_changed(item_id: String)
signal item_picked_up(item: DBItemResource)
signal item_dropped(item: DBItemResource)
signal inventory_opened
signal inventory_closed
signal add_to_inventory(item_id: String, amount: int)
signal remove_from_inventory(item_id: String, amount: int)
signal item_added(item_id: String, amount: int)
signal item_removed(item_id: String, amount: int)
var quick_slot_item_id: String = "001"
var inventory: Dictionary[String, DBItemResource]
func _ready() -> void:
self.quick_slot_item_changed.connect(_on_quick_slot_item_changed)
self.item_picked_up.connect(_on_item_picked_up)
self.item_dropped.connect(_on_item_dropped)
self.add_to_inventory.connect(_on_add_to_inventory)
self.remove_from_inventory.connect(_on_remove_from_inventory)
func _on_add_to_inventory(item_id: String, amount: int = 1) -> void:
if not inventory.has(item_id):
inventory[item_id] = DBItems.data[item_id]
inventory[item_id].amount += amount
func _on_remove_from_inventory(item_id: String, amount: int = 1) -> void:
if not inventory.has(item_id): return
inventory[item_id].amount -= amount
func _on_item_dropped(item_id: String) -> void:
_on_remove_from_inventory(item_id, 1)
func _on_item_picked_up(item_id: String) -> void:
_on_add_to_inventory(item_id, 1)
func _on_quick_slot_item_changed(item_id: String) -> void:
quick_slot_item_id = item_id