public void BFS(QuestEvent qE, int orderNumber = 1) //傳入首個事件,爲之後的事件排序 { QuestEvent thisEvent = FindQuestEvent(qE.GetID()); thisEvent.order = orderNumber; if (orderNumber > 1) { thisEvent.UpDateQuestEvent(QuestEvent.EventStatus.waiting); } else if (orderNumber == 1) { thisEvent.UpDateQuestEvent(QuestEvent.EventStatus.current); } else { thisEvent.UpDateQuestEvent(QuestEvent.EventStatus.done); thisEvent.goTo.UpDateQuestEvent(QuestEvent.EventStatus.current); } foreach (QuestEvent qES in questEvents) { if (qES.order == -1) { BFS(qES, orderNumber + 1); } } }
//標記當前任務狀態並處理currentEvent; public void UpDateQuestEvent(EventStatus eS) { status = eS; if (eS == EventStatus.done && goTo != null) { isDone = true; Debug.Log(goTo); goTo.UpDateQuestEvent(EventStatus.current); Debug.Log("goto next"); } else if (eS == EventStatus.done && goTo == null) { belongTo.isDone = true; belongTo.questStatus = Quest.QuestStatus.done; } }