IEnumerator StartDialogue(DialogueParameters parameters) { int counter = 0; if (!parameters.moreConfirmationBoxes) { parameters.canvasTransform.GetChild(7).GetComponent <Button>().gameObject.SetActive(false); parameters.canvasTransform.GetChild(8).GetComponent <Button>().gameObject.SetActive(false); } foreach (string text in parameters.dialogue) { if (counter > 0) { yield return(StartCoroutine(dialogueManager.WaitForMouseClick())); yield return(StartCoroutine(dialogueManager.WaitForMouseClick())); //I don't know why this second WaitForMouseClick is necessary, but if it's //not here, the dialogue tries to play two lines at the same time. } StartCoroutine(TextScroll(text, parameters.canvasTransform)); counter++; } if (parameters.moreConfirmationBoxes) { parameters.canvasTransform.GetChild(7).GetComponent <Button>().gameObject.SetActive(true); parameters.canvasTransform.GetChild(8).GetComponent <Button>().gameObject.SetActive(true); } else { isTalking = false; } }
public void InspectNPC(RaycastHit2D hit, List <string> dialogue) { npcSprite = hit.collider.gameObject.GetComponent <SpriteRenderer>(); //npcStats = hit.collider.gameObject.GetComponent<NPCStatsManager>(); Transform canvasTransform = this.gameObject.transform.GetChild(0); canvasTransform.GetChild(1).GetComponent <Image>().sprite = playerSprite.sprite; canvasTransform.GetChild(2).GetComponent <Image>().sprite = npcSprite.sprite; canvasTransform.GetChild(4).GetComponent <Text>().text = hit.collider.name; canvasTransform.GetChild(5).GetComponent <Text>().text = player.playerName; DialogueParameters defaultParameters = new DialogueParameters(dialogue, canvasTransform, false); StartCoroutine(StartDialogue(defaultParameters)); }
public void InspectNPC(RaycastHit2D hit, List <string> dialogue, List <string> dialogueYes, List <string> dialogueNo) { npcSprite = hit.collider.gameObject.GetComponent <SpriteRenderer>(); //npcStats = hit.collider.gameObject.GetComponent<NPCStatsManager>(); Transform canvasTransform = this.gameObject.transform.GetChild(0); canvasTransform.GetChild(1).GetComponent <Image>().sprite = playerSprite.sprite; canvasTransform.GetChild(2).GetComponent <Image>().sprite = npcSprite.sprite; canvasTransform.GetChild(4).GetComponent <Text>().text = hit.collider.name; canvasTransform.GetChild(5).GetComponent <Text>().text = player.playerName; DialogueParameters yesButtonParameters = new DialogueParameters(dialogueYes, canvasTransform, false); canvasTransform.GetChild(7).GetComponent <Button>().onClick.AddListener(delegate { StartCoroutine(StartDialogue(yesButtonParameters)); }); DialogueParameters noButtonParameters = new DialogueParameters(dialogueNo, canvasTransform, false); canvasTransform.GetChild(8).GetComponent <Button>().onClick.AddListener(delegate { StartCoroutine(StartDialogue(noButtonParameters)); }); DialogueParameters defaultParamaters = new DialogueParameters(dialogue, canvasTransform, true); StartCoroutine(StartDialogue(defaultParamaters)); }