enemyStatus/CharmedEnemyStatus.cs
public class CharmedEnemyStatus : EnemyStatus
{
public float Lifetime { get; set; }
public override void Init( Enemy enemy )
{
base.Init( enemy );
enemy.CreateCharmVfx();
enemy.IsCharmed = true;
enemy.Sprite.Tint = Color.Lerp( enemy.Sprite.Tint, Color.Magenta, 0.9f );
//enemy.Sprite.FlashTint = Color.Magenta.WithAlpha( 0.4f );
enemy.Target = null;
enemy.LookForEnemyTarget();
Manager.Instance.CharmedEnemyCount++;
}
public void SetLifetime( float lifetime )
{
if ( lifetime > Lifetime )
{
Lifetime = lifetime;
}
}
//public override void Update( float dt )
//{
// if ( Enemy == null || !Enemy.IsValid() )
// return;
// if ( ElapsedTime > Lifetime )
// Enemy.RemoveEnemyStatus( this );
// //Enemy.Velocity *= (1f - Utils.Map( TimeScale, 0.6f, 0f, 3f, 15f ) * dt);
//}
//public override void StartDying()
//{
// Manager.Instance.CharmedEnemyCount--;
// Enemy.IsCharmed = false;
//}
//public override void StartDying()
//{
// base.StartDying();
// Enemy.RemoveEnemyStatus( this );
//}
public override void Remove()
{
Enemy.IsCharmed = false;
Manager.Instance.CharmedEnemyCount--;
if ( !Enemy.IsFlashing )
Enemy.Sprite.FlashTint = Color.White.WithAlpha( 0f );
Enemy.RemoveCharmVfx();
}
public override void Refresh()
{
ElapsedTime = 0f;
}
}