new effect system
This commit is contained in:
parent
f3a6f7a05a
commit
22b02c4590
11 changed files with 146 additions and 89 deletions
48
scripts/systems/effects/EffectHandler.cs
Normal file
48
scripts/systems/effects/EffectHandler.cs
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
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();
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue