using Sirenix.OdinInspector; using UnityEngine.Events; using VOID.Generic.Objects.Abstract.Events; using VOID.Generic.Objects.Unit.Events; namespace VOID.Generic.Objects.Abstract { [System.Serializable] public class AbstractObjectEvents : ObjectComponent { [Title("Spawn")] public UnityEvent onSpawn; [Title("Destroy")] public UnityEvent onRemove; [Title("Time")] public UnityEvent onFixedUpdate; // COMPONENT RELATED EVENTS [Title("Statuses")] public UnityEvent onStatusStart; public UnityEvent onStatusEnd; public UnityEvent onEffectStart; public UnityEvent onEffectEnd; [Title("Data")] public UnityEvent onMaxResourceChange; public UnityEvent onCurrentResourceChange; // TURN RELATED EVENTS // These should be ran only from `VOID.Generic.Turn.TurnManager` // So all `Invoke()` related to turns will be inside that manager class [Title("Turn")] public UnityEvent onTurnQueueStart; public UnityEvent onTurnQueueEnd; public UnityEvent onTurnQueueSwap; public UnityEvent onTurnQueueEnter; public UnityEvent onTurnQueueLeave; public UnityEvent onTurnSelfStart; public UnityEvent onTurnSelfEnd; // ACTION RELATED EVENTS [Title("Death")] public UnityEvent onDeathBefore; public UnityEvent onDeathAfter; [Title("Death")] public UnityEvent onRevive; [Title("Being attacked")] public UnityEvent onDamagedBefore; public UnityEvent onDamagedAfter; [Title("Being hit by ability")] public UnityEvent onAbilityHitBefore; public UnityEvent onAbilityHitAfter; [Title("Being inspected")] public UnityEvent onInspectedBefore; public UnityEvent onInspectedAfter; // PHYSICS RELATED EVENTS [Title("TRIGGER ENTER & LEAVE")] public UnityEvent onTriggerEnter; public UnityEvent onTriggerExit; } }