Example #1
0
        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;
        }