newlon/scripts/systems/effects/EffectHandler.cs
2025-07-30 00:56:53 +05:00

48 lines
1 KiB
C#

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()
{
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();
}
}