private void DoTask() { if (Chunk == null) { Debug.LogError("Cannot do task if we do not know in which chunk we are. :o"); return; } if (taskTarget) { var taskCompleted = Chunk.IsTaskCompleted(this, taskTarget); if (taskCompleted) { Unlock(); } else { if (!Chunk.CanExecuteTask(this, taskTarget, out var reason)) { if (reason == TaskExecutionStatus.OutOfRange) { GotoPosition(taskTarget.transform.position); } if (reason == TaskExecutionStatus.InsufficientResources) { Debug.LogWarning(PlayerName + " is out of resources and won't gain any crafting exp."); } return; } if (Chunk.ExecuteTask(this, taskTarget)) { return; } } } taskTarget = Chunk.GetTaskTarget(this); if (!taskTarget) { return; } Chunk.TargetAcquired(this, taskTarget); if (!Chunk.CanExecuteTask(this, taskTarget, out var exeTaskReason)) { if (exeTaskReason == TaskExecutionStatus.OutOfRange) { GotoPosition(taskTarget.transform.position); } } }