diff --git a/README.md b/README.md index 4503f93..1915f87 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Action ## Dependencies -1. [ToggleState Module](https://git.syntriax.com/Syntriax/ToggleState) +1. [State Module](https://git.syntriax.com/Syntriax/State) Make sure to separately clone these modules along with this one too. diff --git a/Runtime/Action.cs b/Runtime/Action.cs new file mode 100644 index 0000000..5f48240 --- /dev/null +++ b/Runtime/Action.cs @@ -0,0 +1,29 @@ +using System; +using Syntriax.Modules.State; +using UnityEngine; + +namespace Syntriax.Modules.Action +{ + public class Action : MonoBehaviour, IAction + { + private IStateEnable _stateEnable = null; + public IStateEnable StateEnable + { + get + { + _stateEnable = _stateEnable ?? GetComponent() ?? gameObject.AddComponent(); + return _stateEnable; + } + } + + public Action OnActivated { get; set; } = null; + + public void Activate() + { + if (!StateEnable.IsEnabledNullChecked()) + return; + + OnActivated?.Invoke(this); + } + } +} diff --git a/Runtime/ActionBase.cs.meta b/Runtime/Action.cs.meta similarity index 83% rename from Runtime/ActionBase.cs.meta rename to Runtime/Action.cs.meta index b35e7fd..291f06b 100644 --- a/Runtime/ActionBase.cs.meta +++ b/Runtime/Action.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: d07cd6f6a7a635c41add4964a6aba382 +guid: f0778370286865d42a8453967944ab67 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/ActionBase.cs b/Runtime/ActionBase.cs deleted file mode 100644 index f4ad3db..0000000 --- a/Runtime/ActionBase.cs +++ /dev/null @@ -1,33 +0,0 @@ -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); - } - } -} diff --git a/Runtime/ActionBaseWithDeactivation.cs b/Runtime/ActionBaseWithDeactivation.cs deleted file mode 100644 index 5a0599d..0000000 --- a/Runtime/ActionBaseWithDeactivation.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using Syntriax.Modules.ToggleState; - -namespace Syntriax.Modules.Action -{ - public abstract class ActionBaseWithDeactivation : ActionBase, IActionWithDeactivation - { - public Action OnDeactivated { get; set; } = null; - - protected override void Awake() - { - base.Awake(); - OnDeactivated += (_) => OnActionDeactivated(); - } - - /// - /// Called when the current gets deactivated - /// - protected abstract void OnActionDeactivated(); - public virtual void Deactivate() - { - if (!MemberToggleState.IsToggledNullChecked() || !toggleState.IsToggledNullChecked()) - return; - - OnDeactivated?.Invoke(this); - } - } -} diff --git a/Runtime/ActionWithDeactivation.cs b/Runtime/ActionWithDeactivation.cs new file mode 100644 index 0000000..6bc8065 --- /dev/null +++ b/Runtime/ActionWithDeactivation.cs @@ -0,0 +1,18 @@ +using System; +using Syntriax.Modules.State; + +namespace Syntriax.Modules.Action +{ + public class ActionWithDeactivation : Action, IActionWithDeactivation + { + public Action OnDeactivated { get; set; } = null; + + public void Deactivate() + { + if (!StateEnable.IsEnabledNullChecked()) + return; + + OnDeactivated?.Invoke(this); + } + } +} diff --git a/Runtime/ActionBaseWithDeactivation.cs.meta b/Runtime/ActionWithDeactivation.cs.meta similarity index 83% rename from Runtime/ActionBaseWithDeactivation.cs.meta rename to Runtime/ActionWithDeactivation.cs.meta index 043bd8c..1d20728 100644 --- a/Runtime/ActionBaseWithDeactivation.cs.meta +++ b/Runtime/ActionWithDeactivation.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 7bce8bd8b35a51f4785a3933e3526ddf +guid: c41fb1050f19d6c479295ba680295261 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/IAction.cs b/Runtime/IAction.cs index 6ca81e1..286f6c5 100644 --- a/Runtime/IAction.cs +++ b/Runtime/IAction.cs @@ -1,14 +1,14 @@ using System; -using Syntriax.Modules.ToggleState; +using Syntriax.Modules.State; namespace Syntriax.Modules.Action { public interface IAction { /// - /// The member the Action uses to check if it's active or not + /// The member the Action uses to check if it's active or not /// - IToggleState MemberToggleState { get; } + IStateEnable StateEnable { get; } /// /// Called when the is Activated diff --git a/Samples/PlatformerJump.cs b/Samples/PlatformerJump.cs index 1c663a7..618ad18 100644 --- a/Samples/PlatformerJump.cs +++ b/Samples/PlatformerJump.cs @@ -1,10 +1,10 @@ -using Syntriax.Modules.ToggleState; +using Syntriax.Modules.State; using UnityEngine; namespace Syntriax.Modules.Action.Samples { [RequireComponent(typeof(Rigidbody2D))] - public class PlatformerJump : ActionBaseWithDeactivation + public class PlatformerJump : ActionWithDeactivation { [SerializeField] private float jumpSpeed = 10f; public float JumpSpeed { get => jumpSpeed; set => jumpSpeed = value; } @@ -25,22 +25,25 @@ namespace Syntriax.Modules.Action.Samples set => suspensionMultiplier = value * Time.fixedDeltaTime; } - protected IToggleState gameObjectToggleState = null; + protected IStateEnable gameObjectStateEnable = null; protected bool airSuspension = false; protected Rigidbody2D rigid = null; protected virtual void Start() { rigid = GetComponent(); - gameObjectToggleState = GetComponent(); + gameObjectStateEnable = GetComponent(); FallMultiplier = fallMultiplier; SuspensionMultiplier = suspensionMultiplier; + + OnActivated += _ => OnActionDeactivated(); + OnDeactivated += _ => OnActionActivated(); } protected virtual void FixedUpdate() { - if (!MemberToggleState.IsToggledNullChecked() || !gameObjectToggleState.IsToggledNullChecked()) + if (!StateEnable.IsEnabledNullChecked() || !gameObjectStateEnable.IsEnabledNullChecked()) return; if (rigid.velocity.y < FallThreshold) @@ -59,17 +62,17 @@ namespace Syntriax.Modules.Action.Samples rigid.velocity = velocity; } - protected override void OnActionDeactivated() + protected void OnActionDeactivated() { - if (!gameObjectToggleState.IsToggledNullChecked()) + if (!gameObjectStateEnable.IsEnabledNullChecked()) return; airSuspension = false; } - protected override void OnActionActivated() + protected void OnActionActivated() { - if (!gameObjectToggleState.IsToggledNullChecked()) + if (!gameObjectStateEnable.IsEnabledNullChecked()) return; Jump(); diff --git a/package.json b/package.json index b2687bb..24a8013 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "com.syntriax.action", - "version": "0.1.0", + "version": "0.2.0", "displayName": "Action Module", "unity": "2019.1", "documentationUrl": "https://git.syntriax.com/Syntriax/Action.git",