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()); }
public void Raise(DialogueSO dialogue) { for (int i = eventListeners.Count - 1; i >= 0; --i) { eventListeners[i].OnEventRaised(dialogue); } }
private Dialogue CreateDialogue(DialogueSO dialogue) { Dialogue dialogueGameObject = Instantiate(dialoguePrefab, transform).GetComponent <Dialogue>(); dialogueGameObject.Initialize(dialogue); return(dialogueGameObject); }
public void Initialize(DialogueSO dialogueSO) { sender.text = dialogueSO.senderName; dialogue.text = dialogueSO.text; }
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()); }
public IEnumerator SetNext(DialogueSO dialogue) { yield return(new WaitForSeconds(Random.Range(3, 5f))); Next(dialogue); }
public void OnEventRaised(DialogueSO dialogue) { response.Invoke(dialogue); }