|
|
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
-
- /// <summary>
- /// Base class all logic blocks are derived from
- /// </summary>
- [System.Serializable]
- public abstract class LogicBlock : ScriptableObject
- {
-
- #region Inspector Fields
- [SerializeField]
- [Header("Base Settings")]
- [Tooltip("Wait until this block is resolved before moving to next")]
- protected bool WaitUntilFinished = false;
-
- [SerializeField]
- [Tooltip("Amount of times to run this Block before moving to next")]
- protected int RepeatAmount = 1;
- #endregion Inspector Fields
-
- #region private variables
-
- /// <summary>
- /// Amount of times this block has run
- /// </summary>
- protected int RepeatCount = 0;
-
- #endregion private variables
-
-
- #region Class Functions
- /// <summary>
- /// Runs the block
- /// </summary>
- /// <returns>returns true if block is finished</returns>
- public virtual bool Run()
- {
- RepeatCount++;
- BlockLogic();
-
- return (RepeatCount == RepeatAmount);
- }
-
- /// <summary>
- /// Returns the amount of space this logic block takes up
- /// </summary>
- /// <returns>Int which controlls how much space this takes up</returns>
- public virtual int Size()
- {
- return 1;
- }
-
- /// <summary>
- /// Where derived callses should implement the logic for their classes
- /// </summary>
- /// <returns>returns true if block is finished</returns>
- protected abstract void BlockLogic();
-
- #endregion Class Functions
- }
|