示例#1
0
        /// <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();
        }
示例#2
0
        /// <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();
            }
        }
示例#3
0
        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();
            }
        }