/// <summary> /// Muda o atual pelo filho escolhido pelo jogador. /// </summary> /// <param name="id"></param> void MudarNodePorFilho(int id) { // Agora que o jogador clicou em um butão. Olhe o id do butão em que ele clicou e qual a mensagem associada. EncontrandoNodePorFilho = false; if (mensageiro == null) { mensageiro = gameObject; } // Tire o delegate para não se repetir quando for o chamar de novo. DialogarGUI.d -= MudarNodePorFilho; fazendoEscolha = false; // Mude o dialogo atual pelo filho com o id do botão. dialogoAtual = dialogoAtual.GetFilho(id); // Fecha todos os botões. DialogarGUI.FecharBotoes(); // Se não tiver mensagem no dialogo atual, fecha tudo. if ((dialogoAtual.GetMensagem() == null) || (dialogoAtual.GetMensagem().Length == 0)) { Debug.Log("Mensagem é vazia, saindo do dialogo"); FecharDialogo(); dialogoAtual.Agir(mensageiro); return; } // Chama o método de ação do dialogo atual, passando o NPC. dialogoAtual.Agir(mensageiro); // Repete o processo. MostrarDialogo(); }
/// <summary> /// Mostra o dialogo na tela. /// </summary> public void MostrarDialogo() { if (DialogarGUI.GetDialogoAtual() == null) { DialogarGUI.SetDialogoAtual(this); } if (DialogarGUI.GetDialogoAtual() != this) { return; } estaDialogando = true; // Para qualquer dialogo que esteja sendo mostrado. DialogarGUI.StopAllCoroutines(); Debug.Log("Mostrando Dialogo"); if ((dialogoAtual.GetMensagem().Length != 0) && (indexDialogo <= dialogoAtual.GetMensagem().Length)) { // Mostra o dialogo. GUI_Dialogar só lida com strings. DialogarGUI.MostrarMensagem(dialogoAtual.GetMensagem(indexDialogo)); } else { if (dialogoAtual.checarRequisito()) { dialogoAtual.Agir(gameObject); } FecharDialogo(); } }
public void MostrarDialogo(Dialogo dialogo) { estaDialogando = true; indexDialogo = 0; // Para qualquer dialogo que esteja sendo mostrado. DialogarGUI.StopAllCoroutines(); dialogoPadrao = dialogoAtual; dialogoAtual = dialogo; INDialogoFinalizado.AddListener(ResetarDialogo); Debug.Log("Mostrando Dialogo"); if ((dialogoAtual.GetMensagem().Length != 0) && (indexDialogo <= dialogoAtual.GetMensagem().Length)) { // Mostra o dialogo. GUI_Dialogar só lida com strings. DialogarGUI.MostrarMensagem(dialogoAtual.GetMensagem(indexDialogo)); } else { FecharDialogo(); } }