The_Dark_Side_of_Earth/items/generic/active_item.gd

45 lines
1.1 KiB
GDScript3
Raw Normal View History

class_name ActiveItem extends Item
@onready var active_item_uses = get_tree().get_root().get_node_or_null("main/UIOverlay/ActiveItemUses")
2025-09-17 15:59:14 +02:00
@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))
2025-10-02 18:12:42 +02:00
if uses_left_icon != null:
while active_item_uses.get_children().size() < uses:
active_item_uses.add_child(uses_left_icon.instantiate())
2025-09-17 15:59:14 +02:00
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
2025-09-17 15:59:14 +02:00
func actually_collect():
pass
func trigger_activation():
activate()
if uses != -1:
uses -= 1
if uses == 0:
remove()
2025-09-17 15:59:14 +02:00
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()