40 lines
1.1 KiB
GDScript
40 lines
1.1 KiB
GDScript
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
|
|
|
|
var active = true
|
|
var level_control
|
|
|
|
# Called when the node enters the scene tree for the first time.
|
|
func _ready():
|
|
level_control = self.get_node("../")
|
|
|
|
|
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
|
func _process(delta):
|
|
if active == false:
|
|
while item_price > 0:
|
|
item_price = lerp(int(item_price),int(0),delta * .01)
|
|
label_3d.text = "$" + str(item_price)
|
|
|
|
func interact():
|
|
if active == true:
|
|
if level_control.money >= item_price:
|
|
level_control.money -= item_price
|
|
anim_player.play("vend")
|
|
else:
|
|
pass #add "too poor" text here
|
|
|
|
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
|
|
get_parent().add_child(item_vend)
|