extends Node3D @export var item : Resource @export var item_name : String @export var item_price : int @onready var anim_player = $AnimationPlayer @onready var vend_ray = $VendRay @onready var label_3d = $Label3D @onready var level_control = get_tree().current_scene var active = true # Called when the node enters the scene tree for the first time. func _ready(): if active == true: label_3d.text = str(item_price) else: label_3d.text = "offline" func interact(): if active == true: if level_control.money >= item_price: level_control.money -= item_price anim_player.play("vend") label_3d.text = "vending..." else: var original_text = label_3d.text label_3d.text = "too poor" await get_tree().create_timer(2.0).timeout label_3d.text = original_text func vend(): var item_vend = item.instantiate() item_vend.position = vend_ray.global_position item_vend.transform.basis = vend_ray.global_transform.basis item_vend.linear_velocity += vend_ray.global_transform.basis * Vector3(0,0,3) active = false label_3d.text = "offline" get_parent().add_child(item_vend) func save(): var save_dict = { "filename" : get_scene_file_path(), "parent" : get_parent().get_path(), "pos_x" : position.x, "pos_y" : position.y, "pos_z" : position.z, "rot_x" : rotation.x, "rot_y" : rotation.y, "rot_z" : rotation.z, "active" : active } return save_dict