class_name ActiveItem extends Item @onready var active_item_uses = get_tree().get_root().get_node_or_null("main/UIOverlay/ActiveItemUses") @export var sprite : Texture2D @export var uses_left_icon : PackedScene @export var uses = 1: set(new_uses): uses = new_uses if active_item_uses != null: while active_item_uses.get_children().size() > uses: active_item_uses.remove_child(active_item_uses.get_child(0)) if uses_left_icon != null: while active_item_uses.get_children().size() < uses: active_item_uses.add_child(uses_left_icon.instantiate()) func collect() -> bool: if (player.active_item == null or (player.active_item.item_name == item_name and player.active_item.uses < uses)): player.active_item = self uses = uses actually_collect() return true return false func actually_collect(): pass func trigger_activation(): activate() if uses != -1: uses -= 1 if uses == 0: remove() func activate(): assert(false) func remove(reset_player_active = true): if player.active_item == self: uses = 0 if reset_player_active: player.active_item = null self.queue_free()