39 lines
935 B
GDScript
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
|