TurnBasedStrategyCourse/Assets/Scripts/Actions/BaseAction.cs

33 lines
1017 B
C#

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