private IEnumerator Show(ChatMission chatEvent) { this.chatMission = chatEvent; chatHeader.text = "Chat with " + chatEvent.PartnerName; currentDialog = chatEvent.startDialog; while (true) { for (int i = 0; i < currentDialog.DialogLines.Length; i++) { ChatEntry entry = currentDialog.DialogLines[i]; yield return(waitForTrigger = new ChatWaitForTimeOrTrigger(entry.Delay)); if (waitForTrigger.IsTriggered()) { break; } ChatEntryObject chatEntryObject = Instantiate(chatEntryPrefab, chatFieldRoot); if (entry.SenderType == ChatEntry.Sender.other) { chatEntryObject.FadeIn(entry.Message, true, chatEvent.PartnerFace); } else { chatEntryObject.FadeIn(entry.Message, false, chatEvent.MyFace); } } if (currentDialog == chatEvent.endDialog) { break; } if (nextDialog == null) { //Have to wait for next dialog currentDialog = null; yield return(waitForTrigger = new ChatWaitForTrigger()); } currentDialog = nextDialog; nextDialog = null; } yield return(new WaitForSeconds(chatEvent.TimeToShowUntilLastMessage)); canvasGroup.DOFade(0, fadeDuration); yield return(new WaitForSeconds(fadeDuration)); Destroy(gameObject); }
public void ShowMission(ChatMission chatEvent) { lastDialogTime = 999999999; StartCoroutine(Show(chatEvent)); }