extends Interactable class_name ItemObject const ITEM_AREA_WIDTH = 20 const ITEM_SPRITE_SIZE = 40. const SPRITE_SCENE : PackedScene = preload("res://entities/interactables/item_object/item_object_sprite.tscn") @export var item : Item : set(_item): item = _item if object_sprite: object_sprite.apply_texture_to_sprite(item.icon, ITEM_SPRITE_SIZE) object_sprite.generate_particles(item.get_particles()) @onready var object_sprite : ItemObjectSprite = generate_sprite() func _init(_item = null): if _item: item = _item func _ready(): generate_collision(ITEM_AREA_WIDTH) if item and object_sprite: object_sprite.apply_texture_to_sprite(item.icon, ITEM_SPRITE_SIZE) object_sprite.generate_particles(item.get_particles()) func pointer_text() -> String: var name_suffix = "" if item is Seed: name_suffix = "Seed" if item is Package: name_suffix = "Package" return item.name + (" " + name_suffix if name_suffix else "") func interact_text(): return "Take" func inspector_info() -> Inspector.Info: return item.inspector_info() func interact(player : Player) -> bool: player.pick_item(item) pickup_animation(player) return true func pickup_animation(player : Player): available = false var tween : Tween = get_tree().create_tween() tween.tween_property(self, "position", player.position, 0.2) tween.tween_callback( func(): queue_free() ) if object_sprite: object_sprite.pickup_animation() func generate_sprite() -> ItemObjectSprite: var sprite_node = SPRITE_SCENE.instantiate() as ItemObjectSprite add_child(sprite_node) if item: sprite_node.apply_texture_to_sprite( item.icon, ITEM_SPRITE_SIZE ) return sprite_node