The_Dark_Side_of_Earth/items/generic/item.gd

26 lines
896 B
GDScript

class_name Item extends Area2D
@onready var player = get_tree().get_root().get_node_or_null("main/Player")
var collected = false
@export var icon : Texture2D
@export var item_name : String = ""
func _process(_delta: float) -> void:
if(is_instance_valid(player) and overlaps_body(player)):
# Attempt to collect the item. If successful, play the collect animation
# and attach the item to the player.
if(self.has_method("collect") and collect()):
set_deferred("monitoring", false)
set_deferred("monitorable", false)
call_deferred("reparent", player)
collect_animation()
collected = true
# Placeholder for a proper animation.
func collect_animation():
self.visible = false
if self.has_node("AudioStreamPlayer2D"): $AudioStreamPlayer2D.play()
# Intended to be overridden by item classes.
func collect():
push_error("Please specify item collection behavior")
return false