public virtual void DoAction(Action action) { if(IsBusy) throw new InvalidOperationException("User is busy: " + _currentAction.name); _currentAction = action; _currentAction.Finished += OnActionFinished; StartCoroutine(_currentAction.Execute()); }
protected virtual void OnActionFinished(bool finished) { CurrentActionPoints -= _currentAction.Price.points; if (_currentAction != null) ActionFinished(this, _currentAction, finished); _currentAction = null; }