57 lines
1.2 KiB
C#
57 lines
1.2 KiB
C#
using Godot;
|
|
using Newlon.Components.Zombies;
|
|
|
|
namespace Newlon.Systems.Effects;
|
|
|
|
public partial class GarlicEffect : Effect
|
|
{
|
|
RandomNumberGenerator RandomNumberGenerator;
|
|
|
|
public override void Enter(Node target)
|
|
{
|
|
if(RandomNumberGenerator == null)
|
|
{
|
|
RandomNumberGenerator = new RandomNumberGenerator();
|
|
RandomNumberGenerator.Randomize();
|
|
}
|
|
if(target is RuntimeZombieData zombieData)
|
|
zombieData.AbleToEat = false;
|
|
//Animation call
|
|
}
|
|
|
|
public override void Exit(Node target)
|
|
{
|
|
if(target is RuntimeZombieData zombieData)
|
|
{
|
|
int mult;
|
|
if((int)zombieData.GlobalPosition.Y/Utility.TileHeight <= 2)
|
|
{
|
|
mult = 1;
|
|
}
|
|
else if((int)zombieData.GlobalPosition.Y/Utility.TileHeight >= 6)
|
|
{
|
|
mult = -1;
|
|
}
|
|
else
|
|
{
|
|
if(RandomNumberGenerator.RandiRange(0,1) == 0)
|
|
{
|
|
mult = 1;
|
|
}
|
|
else
|
|
{
|
|
mult = -1;
|
|
}
|
|
}
|
|
var tween = zombieData.CreateTween();
|
|
tween.TweenProperty(zombieData,"position:y",zombieData.GlobalPosition.Y + Utility.TileHeight * mult, 1.0);
|
|
tween.TweenCallback(Callable.From(() => {zombieData.AbleToEat = true;}));
|
|
}
|
|
|
|
}
|
|
|
|
public override void Process(Node target)
|
|
{
|
|
|
|
}
|
|
}
|