48 lines
1 KiB
C#
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();
|
|
}
|
|
}
|