示例#1
0
        public void Next(DialogueSO dialogue)
        {
            if (dialogue == null)
            {
                return;
            }

            if (!dialogue.Enabled)
            {
                return;
            }

            Dialogue dialogueGameObject = CreateDialogue(dialogue);

            List <ChoiceData> choices = dialogue.choices;

            foreach (ChoiceData choice in choices)
            {
                CreateChoice(dialogueGameObject, choice, false);
            }

            dialogue.sent = true;

            dialogue.action.Invoke();

            if (choices.Count == 0)
            {
                dialogue = dialogue.nextDialogue;

                StartCoroutine(SetNext(dialogue));
            }

            StartCoroutine(ForceScrollDown());
        }
示例#2
0
 public void Raise(DialogueSO dialogue)
 {
     for (int i = eventListeners.Count - 1; i >= 0; --i)
     {
         eventListeners[i].OnEventRaised(dialogue);
     }
 }
示例#3
0
        private Dialogue CreateDialogue(DialogueSO dialogue)
        {
            Dialogue dialogueGameObject = Instantiate(dialoguePrefab, transform).GetComponent <Dialogue>();

            dialogueGameObject.Initialize(dialogue);

            return(dialogueGameObject);
        }
示例#4
0
 public void Initialize(DialogueSO dialogueSO)
 {
     sender.text   = dialogueSO.senderName;
     dialogue.text = dialogueSO.text;
 }
示例#5
0
        public void SetCallDialogues(Call call)
        {
            Clear();

            if (call.startingDialogue == null)
            {
                return;
            }

            DialogueSO dialogue        = call.startingDialogue;
            DialogueSO currentDialogue = dialogue;

            bool optionChosen = false;
            bool first        = true;

            while (dialogue != null && dialogue.sent)
            {
                currentDialogue = dialogue;
                first           = false;

                optionChosen = false;

                Dialogue dialogueGameObject = CreateDialogue(dialogue);

                List <ChoiceData> choices = dialogue.choices;

                if (choices.Count == 0)
                {
                    dialogue = dialogue.nextDialogue;
                }

                List <Choice> instantiatedChoices = new List <Choice>();

                foreach (ChoiceData choice in choices)
                {
                    Choice createdChoice = CreateChoice(dialogueGameObject, choice, true);

                    instantiatedChoices.Add(createdChoice);

                    if (choice.chosen)
                    {
                        dialogue = choice.nextDialogue;

                        optionChosen = true;
                    }
                }

                if (choices.Count > 0 && !optionChosen)
                {
                    foreach (Choice choice in instantiatedChoices)
                    {
                        choice.UpdateButtonInteractable(true);
                    }

                    break;
                }
            }

            if (dialogue != null)
            {
                if (currentDialogue.choices.Count == 0 || optionChosen || first)
                {
                    StartCoroutine(SetNext(dialogue));
                }
            }

            StartCoroutine(ForceScrollDown());
        }
示例#6
0
        public IEnumerator SetNext(DialogueSO dialogue)
        {
            yield return(new WaitForSeconds(Random.Range(3, 5f)));

            Next(dialogue);
        }
 public void OnEventRaised(DialogueSO dialogue)
 {
     response.Invoke(dialogue);
 }