39 lines
814 B
GDScript
39 lines
814 B
GDScript
extends Interactable
|
|
class_name Compost
|
|
|
|
|
|
@export var value_per_seed : float = 0.5
|
|
|
|
@onready var fill_value : float = 0.
|
|
|
|
func _process(_delta):
|
|
%ProgressBar.value = lerp(%ProgressBar.value, fill_value * 100, 0.5)
|
|
|
|
func inspected_text():
|
|
return "Compost"
|
|
|
|
func interact_text():
|
|
return "Put a seed"
|
|
|
|
func can_interact(p : Player) -> bool:
|
|
return p.inventory.get_item() and p.inventory.get_item() is Seed
|
|
|
|
func requirement_text() -> String:
|
|
return "You must have a seed in hand"
|
|
|
|
func interact(p : Player) -> bool:
|
|
if not can_interact(p):
|
|
return false
|
|
|
|
p.play_sfx("harvest")
|
|
p.delete_item(p.inventory.get_item())
|
|
fill_value += value_per_seed
|
|
if fill_value >= 1.:
|
|
$AnimationPlayer.play("empty")
|
|
fill_value = 0
|
|
p.upgrade()
|
|
value_per_seed /= 1.5
|
|
else:
|
|
$AnimationPlayer.play("fill")
|
|
return true
|