using Sirenix.OdinInspector;
using VOID.Generic.Objects.Abstract;
using VOID.Generic.Objects.Unit;
using VOID.ScriptableObjects;

namespace VOID.Generic.Status.Effect
{
    [System.Serializable]
    public abstract class BasicEffect
    {
        [ReadOnly] protected AbstractObject forObject;
        [ReadOnly] protected BasicStatus forStatus;
        [ReadOnly] protected UnitObject source;

        public void Init(AbstractObject forObject, BasicStatus forStatus, UnitObject source = null)
        {
            this.forObject = forObject;
            this.forStatus = forStatus;
            this.source = source;
        }
        public abstract void OnApply();
        public abstract void OnEnd();
        public abstract void OnTurnSelfStart();
        public abstract void OnTurnSelfEnd();
        public abstract void OnCancel();
        public abstract string GetSimpleDescription();
    }
}