facsimile-wing/scripts/effects_component.gd
2026-06-23 18:19:28 +01:00

25 lines
755 B
GDScript

class_name EffectComponent
extends Node2D
@export var target_node: Node
var active_effects: Array[BaseEffect] = []
func _process(delta: float) -> void:
# Process all active effects backwards so we can safely remove finished ones
for i in range(active_effects.size() - 1, -1, -1):
var effect = active_effects[i]
effect.process(delta, target_node)
# Example: simple time-based expiration
effect.duration -= delta
if effect.duration <= 0.0:
remove_effect(effect)
func apply_effect(effect: BaseEffect) -> void:
effect.start(target_node)
active_effects.append(effect)
func remove_effect(effect: BaseEffect) -> void:
effect.stop(target_node)
active_effects.erase(effect)