Effects handling rework

This commit is contained in:
Rendo 2025-07-07 17:29:10 +05:00
commit 63930450a3
21 changed files with 100 additions and 228 deletions

View file

@ -5,7 +5,7 @@ namespace Newlon.Systems.Effects;
public abstract partial class Effect : Resource
{
[Export] public float Duration;
[Export] public Utility.EffectSlots Slot;
[Export] public string Slot;
public abstract void Enter(Node target);
public abstract void Process(Node target);
public abstract void Exit(Node target);

View file

@ -1,8 +0,0 @@
namespace Newlon.Systems.Effects;
public interface IEffectHandler
{
void GiveEffect(Effect what);
void EndEffect(Effect what);
void ProcessEffects();
}

View file

@ -1 +0,0 @@
uid://eeqk3fvjwg31

View file

@ -11,21 +11,20 @@ public partial class SlownessEffect : Effect
public override void Enter(Node target)
{
if (target is IEffectHandler handler)
if (target is Entity entity)
{
if (target is ILocalTimescale timescalable)
timescalable.LocalTimescale *= Multiplier;
if (target is CanvasItem canvasItem)
canvasItem.Modulate = ColorOverride;
entity.LocalTimescale *= Multiplier;
entity.Modulate = ColorOverride;
}
}
public override void Exit(Node target)
{
if(target is ILocalTimescale timescalable)
timescalable.LocalTimescale /= Multiplier;
if(target is CanvasItem canvasItem)
canvasItem.Modulate = Colors.White;
if (target is Entity entity)
{
entity.LocalTimescale /= Multiplier;
entity.Modulate = Colors.White;
}
}
public override void Process(Node target)