Esempio n. 1
0
    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);
    }
Esempio n. 2
0
 public void ShowMission(ChatMission chatEvent)
 {
     lastDialogTime = 999999999;
     StartCoroutine(Show(chatEvent));
 }