the-crypt/Player/PlayerStats.gd
2020-07-23 01:59:43 -05:00

63 lines
1.6 KiB
GDScript

extends CanvasLayer
onready var Hearts: TextureProgress = $"Player UI Frame 2/Hearts"
onready var Energybar: TextureProgress = $"Player UI Frame 2/Energy"
onready var Regen: Timer = $Regen
onready var BurnoutSprite: Sprite = $"Player UI Frame 2/Energy Burnout"
var health = 3 setget set_health, get_health
var energy = 5 setget set_energy, get_energy
var is_burnout = false
func _ready():
yield(get_tree(), "idle_frame")
if Player.health == null:
Player.health = Hearts.max_value
if Player.energy == null:
Player.energy = Energybar.max_value
print("max")
set_health(Player.health)
set_energy(Player.energy)
func _on_Regen_timeout():
set_energy(get_accurate_energy() + 1)
if get_accurate_energy() == Energybar.max_value:
is_burnout = false
func _process(delta):
if Player.health == null:
Player.health = Hearts.max_value
if Player.energy == null:
Player.energy = Energybar.max_value
if get_accurate_energy() < Energybar.max_value and Regen.is_stopped():
Regen.start()
BurnoutSprite.visible = is_burnout
set_health(Player.health)
set_energy(Player.energy)
func set_health(value):
if Hearts.value > value:
get_parent().play_hitsound()
Hearts.value = clamp(value, Hearts.min_value, Hearts.max_value)
Player.health = get_health()
func get_health():
return Hearts.value
func set_energy(value):
Energybar.value = clamp(value, Energybar.min_value, Energybar.max_value)
if Energybar.value == 0:
is_burnout = true
Player.energy = get_accurate_energy()
func get_energy():
if is_burnout == true:
return 0
return Energybar.value
func get_accurate_energy():
return Energybar.value
func interrupt_regen():
Regen.start()