public IEnumerator TaskListCoroutine() { while (CurrentTaskId != Tasks.Count) { if (CurrentTaskId == -1) { yield return(null); } int tempTaskId = CurrentTaskId; // destroy previous hint if any if (Hint != null) { Destroy(Hint); } // get the task Task task = Tasks[tempTaskId]; // unlock node ChangeLockOfTaskNode(task, false); // fire task start event if (TaskStartListeners != null) { TaskStartListeners.Invoke(task); } task.DrawTaskHint(); while (tempTaskId == CurrentTaskId) { task.UpdateTaskHint(); yield return(null); } MPO.Release(); MPO.Deselect(task.GameObject); ChangeLockOfTaskNode(task, true); // destroy hint if any if (Hint != null) { Destroy(Hint); } // run task event coroutine if exists if (task.TaskEvent != null) { yield return(StartCoroutine(task.TaskEvent.TaskEventCoroutine())); } yield return(null); } yield return(null); }
public void Release() { MPO.Release(); }