using System; using System.Collections.Generic; using Grid; using UnityEngine; namespace Actions { public abstract class BaseAction : MonoBehaviour { protected bool IsActive; protected Action OnActionComplete; protected Unit Unit; protected virtual void Awake() => Unit = GetComponent(); public abstract string GetActionName(); public abstract void TakeAction(GridPosition gridPosition, Action onActionComplete); public virtual bool IsValidActionGridPosition(GridPosition gridPosition) => GetValidActionGridPositionList().Contains(gridPosition); public abstract List GetValidActionGridPositionList(); public virtual int GetActionPointsCost() => 1; } }