using System; using Syntriax.Modules.ToggleState; using UnityEngine; namespace Syntriax.Modules.Action { public abstract class ActionBase : MonoBehaviour, IAction { public IToggleState MemberToggleState { get; protected set; } = null; public Action OnActivated { get; set; } = null; protected IToggleState toggleState = null; protected virtual void Awake() { toggleState = GetComponent(); MemberToggleState = new ToggleStateMember(true); OnActivated += (_) => OnActionActivated(); } /// /// Called when the current gets activated /// protected abstract void OnActionActivated(); public virtual void Activate() { if (!MemberToggleState.IsToggledNullChecked() || !toggleState.IsToggledNullChecked()) return; OnActivated?.Invoke(this); } } }