virtual protected void EncontrarProximoNode() { // Mostra as opções de escolha para o jogador e espera que ele clique em alguma. if (mensageiro == null) { mensageiro = gameObject; } // Caso não tenha filho, saia do dialógo. if ((dialogoAtual.GetFilhos().Count == 0) || (dialogoAtual.GetFilhos() == null)) { Debug.Log("Nenhum filho encontrado, saindo do dialogo"); FecharDialogo(); return; } // Caso o proximo filho não tenha mensagens, apenas aja. if ((dialogoAtual.GetFilhos().Count == 1) && (dialogoAtual.GetFilhos()[0].GetNomeEscolha() == "") && (dialogoAtual.GetFilho(0).GetMensagem().Length == 0)) { FecharDialogo(); dialogoAtual.GetFilho(0).Agir(gameObject); return; } // Se houver apenas um filho e ele não possua uma mensagem de escolha, mostre ele. if ((dialogoAtual.GetFilhos().Count == 1) && (dialogoAtual.GetFilhos()[0].GetNomeEscolha() == "")) { Debug.Log("Só tem um filho sem nome"); dialogoAtual = dialogoAtual.GetFilhos()[0]; return; } if ((dialogoAtual.GetFilhos().Count == 1) && (!dialogoAtual.GetFilhos()[0].checarRequisito())) { Debug.Log("Só tem um filho, mas seu requisito não foi cumprido"); FecharDialogo(); return; } // Caso nenhuma dessas exceções, mostre os botões e espere. Debug.Log("Mostrando botoes"); fazendoEscolha = true; DialogarGUI.d += MudarNodePorFilho; for (int i = 0; i < dialogoAtual.GetFilhos().Count; i++) { Debug.Log("Spawnando botoes"); // Checa se o requisito desse dialogo foi cumprido, caso não, não o mostre. if (dialogoAtual.GetFilho(i).checarRequisito()) { DialogarGUI.MostrarBotao(dialogoAtual.GetFilho(i).GetNomeEscolha(), i); } } EncontrandoNodePorFilho = true; }