using Godot; using Newlon.Components; namespace Newlon.Systems.Effects; public partial class EffectHandler : RefCounted { public Entity handler; public Effect HandledEffect; public Timer EffectTimer; public Tween EffectTween; public void Start() { EffectTimer.WaitTime = HandledEffect.Duration; EffectTimer.Start(); HandledEffect.Enter(handler); } public void End() { if (HandledEffect == null) return; HandledEffect.Exit(handler); HandledEffect = null; EffectTimer.Stop(); if (EffectTween != null) { LON.ForceFinishTween(EffectTween); EffectTween.Kill(); } } public void Process() { HandledEffect.Process(handler); } public void Restart() { HandledEffect.Exit(handler); EffectTimer.Stop(); if (EffectTween != null) { LON.ForceFinishTween(EffectTween); EffectTween.Kill(); } HandledEffect.Enter(handler); EffectTimer.Start(); } }