1
Fork 0
mirror of https://github.com/Steffo99/octogem.git synced 2024-10-16 20:17:26 +00:00
octogem/Assets/Scripts/Structures/GenericEffect.cs
2018-09-27 00:38:49 +02:00

44 lines
1.7 KiB
C#

using UnityEngine;
public abstract class GenericEffect : MonoBehaviour
{
//Duration doesn't decrease automatically
private int duration;
public void SetDuration(int value, Unit self = null)
{
bool firstApplication = (self == null);
duration = value;
if(firstApplication && self != null)
{
OnApply(self);
}
}
public void ChangeDuration(int value, Unit self = null)
{
duration += value;
if(value < 0 && duration <= 0)
{
OnExpire(self);
}
}
public virtual void OnApply(Unit self) { }
public virtual void OnExpire(Unit self) { Destroy(this); } //The effect should remove itself when the duration ends
public virtual void OnTurnStart(Unit self) { }
public virtual void OnTurnEnd(Unit self) { }
public virtual void BeforeAttack(Unit self) { }
public virtual void AfterAttack(Unit self) { }
public virtual bool BeforeDeath(Unit self) { return true; } //Returns false if the effect prevented the death of the unit
public virtual void BeforeStep(Unit self) { }
public virtual void AfterStep(Unit self) { }
public virtual void BeforeMove(Unit self) { }
public virtual void AfterMove(Unit self) { }
public virtual void BeforeDamage(Unit self, int damageAmount) { }
public virtual void AfterDamage(Unit self, int damageAmount) { }
public virtual void BeforeHeal(Unit self, int healAmount) { }
public virtual void AfterHeal(Unit self, int healAmount) { }
public virtual void BeforeNewEffect(Unit self, GenericEffect effect) { }
public virtual void AfterNewEffect(Unit self, GenericEffect effect) { }
}