64 lines
1.4 KiB
GDScript
64 lines
1.4 KiB
GDScript
class_name QuestorSprite extends QuestSprite
|
|
|
|
@onready var levelup_banner_template = preload("res://templates/levelup_banner.tscn")
|
|
|
|
var data : Adventurer = null
|
|
var banner_lag : float
|
|
|
|
func _ready() -> void:
|
|
if data:
|
|
life = data.life
|
|
max_life = data.max_life
|
|
energy = data.energy
|
|
max_energy = data.max_energy
|
|
level = data.level
|
|
exp = data.exp
|
|
stats = StatBlock.copy(data.stats)
|
|
gold = data.gold
|
|
data.changed.connect(_on_questor_changed)
|
|
super._ready()
|
|
|
|
func _process(delta) -> void:
|
|
if banner_lag > 0:
|
|
banner_lag -= delta
|
|
|
|
func set_animation(anim_name : String) -> void:
|
|
anim_player.play(anim_name)
|
|
|
|
func setup(adv : Adventurer) -> void:
|
|
data = adv
|
|
life = data.life
|
|
max_life = data.max_life
|
|
energy = data.energy
|
|
max_energy = data.max_energy
|
|
level = data.level
|
|
exp = data.exp
|
|
stats = StatBlock.copy(data.stats)
|
|
gold = data.gold
|
|
adv.quest_sprite = self
|
|
data.levelled.connect(_on_level_up)
|
|
|
|
func show_levelup_banner(lagged : bool = false) -> void:
|
|
if !lagged and banner_lag > 0:
|
|
var tween = create_tween()
|
|
tween.tween_interval(banner_lag)
|
|
tween.tween_callback(show_levelup_banner.bind(true))
|
|
banner_lag += .75
|
|
return
|
|
var banner = levelup_banner_template.instantiate()
|
|
banner.position = Vector2.ZERO
|
|
banner_offset.add_child(banner)
|
|
banner_lag = .75
|
|
|
|
|
|
func check_levelup() -> void:
|
|
data.gain_exp(exp)
|
|
|
|
|
|
|
|
func _on_level_up() -> void:
|
|
show_levelup_banner()
|
|
|
|
func _on_questor_changed() -> void:
|
|
pass
|