project-dung/scripts/item_holder.gd

39 lines
935 B
GDScript

extends Spatial
export var start_with_item : String = ""
var item_in_hold
# Called when the node enters the scene tree for the first time.
func _ready():
if start_with_item != "":
var item_instance = preload("res://scenes/item.tscn").instance()
item_instance.item_name = start_with_item
add_item(item_instance)
func remove_item():
assert(item_in_hold != null)
var removed_item = item_in_hold
$ItemSpawn.remove_child(item_in_hold)
item_in_hold = null
return removed_item
func add_item(item):
assert(item_in_hold == null)
$ItemSpawn.add_child(item)
item_in_hold = item
func on_player_interact(player) -> bool:
var player_item = player.get_item_in_hand()
if item_in_hold == null:
if player_item == null:
return false
add_item(player_item)
else:
var item_pickup = remove_item()
player.pick_up_item(item_pickup)
$AudioStreamPlayer.play()
if player_item != null:
add_item(player_item)
return true