seeding-planets/entities/interactables/item_object/script/item_object.gd

49 lines
1.0 KiB
GDScript

extends Interactable
class_name ItemObject
const ITEM_AREA_WIDTH = 10
const SPRITE_SCENE : PackedScene = preload("res://entities/interactables/item_object/item_object_sprite.tscn")
@export var item : Item :
set(_item):
item = _item
if sprite:
sprite.texture = item.icon
@onready var sprite : Sprite2D = generate_sprite()
func _init(_item = null):
if _item:
item = _item
func _ready():
generate_collision(10)
func interact(player : Player) -> bool:
if player.inventory.lenght() < player.inventory.max_items:
player.inventory.add_item(item)
pickup_animation(player)
else :
var swaped_item = player.inventory.swap_items(item)
item = swaped_item
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()
)
func generate_sprite() -> Sprite2D:
var s = SPRITE_SCENE.instantiate() as Sprite2D
add_child(s)
s.texture = item.icon
return s