33 lines
1017 B
C#
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();
|
|
}
|
|
}
|
|
} |