Attempt2/lib/components/Stamina_Component.gd

40 lines
908 B
GDScript

class_name StaminaComponent
extends Node
export var max_stamina: int = 0
## Recovery Rate in units per second
export var recovery_rate: int = 0
onready var stamina :int = max_stamina
signal stamina_depleted()
var recovery_counter: float = 0
func _process(delta):
recovery_counter += delta
if recovery_rate != 0:
var _rate :float = 1.0/float(recovery_rate)
if recovery_counter > _rate: ## Divide by zero warning
recover(1)
recovery_counter = 0
func reduce_stamina(_amount :int):
if _amount < 0:
push_error("ERROR: Only positive numbers in stamina component functions.")
stamina -= _amount
if stamina <= 0:
emit_signal("stamina_depleted")
stamina = 0
func recover(recover_amount :int):
if recover_amount < 0:
push_error("ERROR: Only positive numbers in stamina component functions.")
return
stamina += recover_amount
if stamina > max_stamina:
stamina = max_stamina