using System; using Syntriax.Modules.State; using UnityEngine; namespace Syntriax.Modules.Action { public abstract class ActionBase : MonoBehaviour, IAction { public IStateEnable StateEnable { get; protected set; } = null; public Action OnActivated { get; set; } = null; protected virtual void Awake() { StateEnable = new StateEnableMember(true); OnActivated += (_) => OnActionActivated(); } /// /// Called when the current gets activated /// protected abstract void OnActionActivated(); public virtual void Activate() { if (!StateEnable.IsEnabledNullChecked()) return; OnActivated?.Invoke(this); } } }