protected override void StartExecutionImpl() { if (source.GetToolCount(toolType) < 1) { throw new InvalidOperationException("not enough tools"); } if (Subject.CurrentTool != ToolType.None) { throw new InvalidOperationException("already carrying another tool"); } Subject.MoveTo(source.transform.position); Status = ExecutionStatus.InProgress; }
protected override void UpdateImpl() { if (Status == ExecutionStatus.InProgress && Subject.ReachedDestination) { Subject.CurrentTool = ToolType.None; target.SetToolCount(toolType, target.GetToolCount(toolType) + 1); Status = ExecutionStatus.Complete; } }