using System.Collections; using System.Collections.Generic; using UnityEngine; /// /// Base class all logic blocks are derived from /// [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 /// /// Amount of times this block has run /// protected int RepeatCount = 0; #endregion private variables #region Class Functions /// /// Runs the block /// /// returns true if block is finished public virtual bool Run() { RepeatCount++; BlockLogic(); return (RepeatCount == RepeatAmount); } /// /// Returns the amount of space this logic block takes up /// /// Int which controlls how much space this takes up public virtual int Size() { return 1; } /// /// Where derived callses should implement the logic for their classes /// /// returns true if block is finished protected abstract void BlockLogic(); #endregion Class Functions }