Files
fps_project_1/scripts/vendingmahcine.gd
2025-02-21 23:19:25 -06:00

58 lines
1.5 KiB
GDScript

extends Node3D
@export var item : Resource
@export var item_name : String
@export var item_price : int
@export var number_uses = 1
@onready var anim_player = $AnimationPlayer
@onready var vend_ray = $VendRay
@onready var price_label = $Price
@onready var item_label: Label3D = $Item
@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:
price_label.text = str("$",item_price)
item_label.text = str(item_name)
else:
price_label.text = "offline"
func interact():
if active == true:
if level_control.money >= item_price:
level_control.money -= item_price
anim_player.play("vend")
price_label.text = "vending..."
else:
var original_text = price_label.text
price_label.text = "too poor"
await get_tree().create_timer(2.0).timeout
price_label.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)
if number_uses <= 1:
active = false
price_label.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