Files
aarpg/general/item-dropper/item_dropper.gd
Andriy Yednarovych e877c5f058 init
2026-02-22 19:26:26 +01:00

47 lines
1.0 KiB
GDScript

@tool
class_name ItemDropper extends Node2D
const PICKUP = preload("res://items/item_pickup/item_pickup.tscn")
@export var item: ItemData : set = set_item_data
@onready var sprite: Sprite2D = $Sprite2D
@onready var dropped_data: PersistentDataHandler = $PersistentDataHandler
@onready var audio: AudioStreamPlayer = $AudioStreamPlayer
var dropped := false
func _ready() -> void:
if Engine.is_editor_hint():
update_texture()
return
sprite.visible = false
dropped_data.data_loaded.connect(on_data_loaded)
on_data_loaded()
func set_item_data(new_item: ItemData) -> void:
item = new_item
update_texture()
func update_texture() -> void:
if !Engine.is_editor_hint():
return
if item and sprite:
sprite.texture = item.texture
func on_data_loaded() -> void:
dropped = dropped_data.value
func drop_item() -> void:
if dropped:
return
dropped = true
var drop = PICKUP.instantiate() as ItemPickup
drop.item_data = item
add_child(drop)
drop.picked_up.connect(on_item_picked_up)
audio.play()
func on_item_picked_up() -> void:
dropped_data.set_value()