public void IniciarConversa(Conversation_NodeGraph Conversa) { setAllConversationTexts(Conversa); Conversation = Conversa; conversationStarted = false; startNode = Conversation.GetStartingNode(); DialogCanvas.SetActive(true); DialogCanvas2.SetActive(true); GameObject.Find("RostoPlayer").GetComponent <Image>().sprite = startNode.Retrato_Esquerda; GameObject.Find("RostoNPC").GetComponent <Image>().sprite = startNode.Retrato_direita; Parametros_globais.speed = 0; print(Parametros_globais.speed); WaitingAnswer = false; }
IEnumerator EndConversationDelay(float time, EndNode nodeFinal) //Fecha a interface de conversa e reseta a velocidade do player após time //opcionalmente, inicia outra conversa da sequencia após time { yield return(new WaitForSeconds(time)); if (nodeFinal == null || nodeFinal.conversa_seguinte == null) { DialogCanvas.SetActive(false); DialogCanvas2.SetActive(false); Parametros_globais.speed = Parametros_globais.startingSpeed; Conversation = null; } else { IniciarConversa(nodeFinal.conversa_seguinte); } }
void setAllConversationTexts(Conversation_NodeGraph cng) //metodo que coloca os textos das conversas dentro dos nodes, conforme a lingua preferida //os valores sao lidos de um arquivo de texto { Debug.Log(Path.Combine(Application.dataPath, "falas", cng.name + '_' + preferred_language + ".conversation")); string[] falas = File.ReadAllLines(Path.Combine(Application.dataPath, "falas", cng.name + '_' + preferred_language + ".conversation")); foreach (Conversation_Node cn in cng.getAllConversationNodes()) { int index_identificador = Array.IndexOf(falas, "@" + cn.identificador) + 1; //Debug.Log("index identificador") if (index_identificador > -1) { //texto_npc for (int i = index_identificador; i < falas.Length; i++) { if (falas[i].StartsWith("npc_text=")) { cn.NPCText = falas[i].Split('=')[1]; break; } if (falas[i].StartsWith("@")) { break; } } //para cada uma das operacoes... for (int op = 1; op <= 4; op++) { for (int j = 0; j < 2; j++) { //buscar em cada uma das linhas do arquivo, a partir do identificador... for (int i = index_identificador; i < falas.Length; i++) { Debug.Log(falas[i]); //para evitar ler sem necessidade, se chegar em @, interromper //isso significa que ja estamos em outro identificador if (falas[i].StartsWith("@")) { break; } //se ele inicia com o valor da fala curta... if (falas[i].StartsWith(string.Format("Op{0}=", op))) { if (op == 1) { cn.Opcao1 = falas[i].Split('=')[1]; } else if (op == 2) { cn.Opcao2 = falas[i].Split('=')[1]; } else if (op == 3) { cn.Opcao3 = falas[i].Split('=')[1]; } else if (op == 4) { cn.Opcao4 = falas[i].Split('=')[1]; } break; } //ou se ele inicia com o valor da fala longa... else if (falas[i].StartsWith(string.Format("Op{0}_full=", op))) { if (op == 1) { cn.Opcao1FullText = falas[i].Split('=')[1]; } else if (op == 2) { cn.Opcao2FullText = falas[i].Split('=')[1]; } else if (op == 3) { cn.Opcao3FullText = falas[i].Split('=')[1]; } else if (op == 4) { cn.Opcao4FullText = falas[i].Split('=')[1]; } break; } } } } } } }