50 lines
1.1 KiB
C#

using Characters;
using UnityEngine;
using System;
using System.Collections;
using Mirror;
namespace Debuffs
{
public class DebuffBase
{
public event Action<DebuffBase, Pawn> OnDebuffStart;
public event Action<DebuffBase, Pawn> OnDebuffEnd;
protected float duration = 5f;
public float Duration => duration;
public virtual void Enable(Pawn pawn) { }
public virtual void Disable(Pawn pawn) { }
public virtual IEnumerator Act(Pawn pawn)
{
OnDebuffStart?.Invoke(this, pawn);
yield return new WaitForSeconds(duration);
OnDebuffEnd?.Invoke(this, pawn);
}
public DebuffBase() { }
public DebuffBase(float duration)
{
this.duration = duration;
}
}
public static class DebuffSerializer
{
public static void WriteDebuff(this NetworkWriter writer, DebuffBase value)
{
writer.WriteFloat(value.Duration);
}
public static DebuffBase ReadDebuff(this NetworkReader reader)
{
return new TaserDebuff(reader.ReadFloat());
}
}
}