44 lines
1.1 KiB
GDScript
44 lines
1.1 KiB
GDScript
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()
|