Files
przygody-pana-cegly/scripts/components/status_effect_component.gd

47 lines
945 B
GDScript

class_name StatusEffectComponent
extends Node
enum EffectType {
NONE,
FIRE,
ICE
}
var active_effect: StatusEffectDataResource = null
var timer: Timer
var is_active: bool = false
var time_elapsed: float = 0.0
signal effect_applied(effect_data: StatusEffectDataResource)
signal effect_removed(effect_type: EffectType)
func _ready() -> void:
timer = Timer.new()
timer.timeout.connect(on_timer_timeout)
add_child(timer)
func apply_effect(effect_data: StatusEffectDataResource) -> void:
if is_active:
return
is_active = true
active_effect = effect_data
prepare_timer()
effect_applied.emit(active_effect)
timer.start()
func remove_effect() -> void:
is_active = false
effect_removed.emit(active_effect.effect_type)
func on_timer_timeout() -> void:
remove_effect()
func prepare_timer() -> void:
timer.set_wait_time(active_effect.duration)
timer.set_one_shot(true)
timer.stop()