0.2.0
This commit is contained in:
		@@ -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.
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										29
									
								
								Runtime/Action.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								Runtime/Action.cs
									
									
									
									
									
										Normal file
									
								
							@@ -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<State.IStateEnable>() ?? gameObject.AddComponent<State.StateEnableMonoBehaviour>();
 | 
			
		||||
                return _stateEnable;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Action<IAction> OnActivated { get; set; } = null;
 | 
			
		||||
 | 
			
		||||
        public void Activate()
 | 
			
		||||
        {
 | 
			
		||||
            if (!StateEnable.IsEnabledNullChecked())
 | 
			
		||||
                return;
 | 
			
		||||
 | 
			
		||||
            OnActivated?.Invoke(this);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: d07cd6f6a7a635c41add4964a6aba382
 | 
			
		||||
guid: f0778370286865d42a8453967944ab67
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
@@ -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<IAction> OnActivated { get; set; } = null;
 | 
			
		||||
 | 
			
		||||
        protected IToggleState toggleState = null;
 | 
			
		||||
 | 
			
		||||
        protected virtual void Awake()
 | 
			
		||||
        {
 | 
			
		||||
            toggleState = GetComponent<IToggleState>();
 | 
			
		||||
            MemberToggleState = new ToggleStateMember(true);
 | 
			
		||||
            OnActivated += (_) => OnActionActivated();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Called when the current <see cref="ActionBase"/> gets activated
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        protected abstract void OnActionActivated();
 | 
			
		||||
        public virtual void Activate()
 | 
			
		||||
        {
 | 
			
		||||
            if (!MemberToggleState.IsToggledNullChecked() || !toggleState.IsToggledNullChecked())
 | 
			
		||||
                return;
 | 
			
		||||
 | 
			
		||||
            OnActivated?.Invoke(this);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,28 +0,0 @@
 | 
			
		||||
using System;
 | 
			
		||||
using Syntriax.Modules.ToggleState;
 | 
			
		||||
 | 
			
		||||
namespace Syntriax.Modules.Action
 | 
			
		||||
{
 | 
			
		||||
    public abstract class ActionBaseWithDeactivation : ActionBase, IActionWithDeactivation
 | 
			
		||||
    {
 | 
			
		||||
        public Action<IAction> OnDeactivated { get; set; } = null;
 | 
			
		||||
 | 
			
		||||
        protected override void Awake()
 | 
			
		||||
        {
 | 
			
		||||
            base.Awake();
 | 
			
		||||
            OnDeactivated += (_) => OnActionDeactivated();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Called when the current <see cref="ActionBase"/> gets deactivated
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        protected abstract void OnActionDeactivated();
 | 
			
		||||
        public virtual void Deactivate()
 | 
			
		||||
        {
 | 
			
		||||
            if (!MemberToggleState.IsToggledNullChecked() || !toggleState.IsToggledNullChecked())
 | 
			
		||||
                return;
 | 
			
		||||
 | 
			
		||||
            OnDeactivated?.Invoke(this);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										18
									
								
								Runtime/ActionWithDeactivation.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								Runtime/ActionWithDeactivation.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
using System;
 | 
			
		||||
using Syntriax.Modules.State;
 | 
			
		||||
 | 
			
		||||
namespace Syntriax.Modules.Action
 | 
			
		||||
{
 | 
			
		||||
    public class ActionWithDeactivation : Action, IActionWithDeactivation
 | 
			
		||||
    {
 | 
			
		||||
        public Action<IAction> OnDeactivated { get; set; } = null;
 | 
			
		||||
 | 
			
		||||
        public void Deactivate()
 | 
			
		||||
        {
 | 
			
		||||
            if (!StateEnable.IsEnabledNullChecked())
 | 
			
		||||
                return;
 | 
			
		||||
 | 
			
		||||
            OnDeactivated?.Invoke(this);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 7bce8bd8b35a51f4785a3933e3526ddf
 | 
			
		||||
guid: c41fb1050f19d6c479295ba680295261
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
@@ -1,14 +1,14 @@
 | 
			
		||||
using System;
 | 
			
		||||
using Syntriax.Modules.ToggleState;
 | 
			
		||||
using Syntriax.Modules.State;
 | 
			
		||||
 | 
			
		||||
namespace Syntriax.Modules.Action
 | 
			
		||||
{
 | 
			
		||||
    public interface IAction
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// The member <see cref="IToggleState"/> the Action uses to check if it's active or not
 | 
			
		||||
        /// The member <see cref="IStateEnable"/> the Action uses to check if it's active or not
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        IToggleState MemberToggleState { get; }
 | 
			
		||||
        IStateEnable StateEnable { get; }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Called when the <see cref="IAction"/> is Activated
 | 
			
		||||
 
 | 
			
		||||
@@ -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<Rigidbody2D>();
 | 
			
		||||
            gameObjectToggleState = GetComponent<IToggleState>();
 | 
			
		||||
            gameObjectStateEnable = GetComponent<IStateEnable>();
 | 
			
		||||
 | 
			
		||||
            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();
 | 
			
		||||
 
 | 
			
		||||
@@ -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",
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user