private IEnumerator DispararFalaDoProfessorAposFeedbackDeTodosOsAlunos() { // Esperar até que a fala possa aparecer yield return(new WaitWhile(() => GameManager.uiSendoUsada)); // Criar o diálogo que o professor vai falar após os feedbacks Dialogo dialogo = new Dialogo(); dialogo.nodulos = new DialogoNodulo[1]; dialogo.nodulos[0] = new DialogoNodulo(); dialogo.nodulos[0].falas = new Fala[2]; // Adicionar fala da Lurdinha (em branco por enquanto, mas o código // está pronto aqui caso queiram adicionar uma fala da Lurdinha) dialogo.nodulos[0].falas[0] = new Fala { fala = "", personagem = GameComenius.Dialogo.Personagens.Lurdinha, emocao = GameComenius.Dialogo.Expressao.Sorrindo }; // Adicionar fala do professor var npcDialogoProfessor = professor.professor.GetComponent <NpcDialogo>(); dialogo.nodulos[0].falas[1] = new Fala { personagem = npcDialogoProfessor.dialogoPrincipal.nodulos[0].falas[1].personagem, emocao = npcDialogoProfessor.dialogoPrincipal.nodulos[0].falas[1].emocao, fala = "O feedback dos alunos foi bastante esclarecedor. Eu espero ver você em uma próxima oportunidade, até mais!" }; SistemaDialogo.sistemaDialogo.ComecarDialogo(dialogo.Clone(), null); }
private void Btn_Guardar_Click(object sender, EventArgs e) { deshabilitarBotones(); this.reporteMdl = llenarReporteMdl(); this.propiedadReporte = llenarPropiedadRpt(); sentencia s = new sentencia(usuario); Dialogo dialogo = new Dialogo(); bool confirmacion = dialogo.dialogoSiNo("Confirmacion", "Desea guardar?"); if (confirmacion) { if (this.accion == "nuevo") { reporteMdlControl.insertarReporteMdl(this.reporteMdl); propiedadReporteControl.insertarPropiedadReporteSinApp(this.propiedadReporte); } else if (this.accion == "modificar") { reporteMdlControl.actualizarReporteMdl(this.reporteMdl); } iniciazliarTbpConsulta(); Tbc_RptMdl.SelectedTab = Tbp_Consulta; this.reporteMdl = new ReporteModulo(); llenarDgv(); s.insertarBitacora(usuario, "Guardar reporte modulo", "Tbl_Modulo"); } }
void BtnCompararDiretoriosClick(object sender, EventArgs e) { string sCaminhoDir1 = "", sCaminhoDir2 = ""; bool bSelecionado; bSelecionado = false; if (tvDiretorio1.SelectedNode.IsSelected) { catalogador.LerArvoreDiretorio(tvDiretorio1.SelectedNode, barraStatus); sCaminhoDir1 = labStatus2.Text; if (tvDiretorio2.SelectedNode.IsSelected) { catalogador.LerArvoreDiretorio( tvDiretorio2.SelectedNode, barraStatus); sCaminhoDir2 = labStatus2.Text; bSelecionado = true; } } LimparComparacao(); if (bSelecionado) { Comparar(sCaminhoDir1, sCaminhoDir2); } else { Dialogo.mensagemInfo("Diretórios não selecionados!"); } }
public void ExcluirDiretorioSelecionado(IProgressoLog pLog) { TreeView arvore = getArvoreAtual(); TreeStore arvoreStore = (TreeStore)arvore.Model; TreeIter iter; arvore.Selection.GetSelected(out iter); if (arvore.Selection.IterIsSelected(iter)) { NodeView tabela = getTabelaAtual(); ListStore tabelaStore = (ListStore)tabela.Model; bool res = Dialogo.confirma("Tem Certeza, que você deseja excluir este diretório, isto implicará na destruição de todos os seus items catalogados?"); if (res) { form.GdkWindow.Cursor = new Gdk.Cursor(Gdk.CursorType.Watch); string valor = (string)arvoreStore.GetValue(iter, 1); DiretorioBO.Instancia.excluirDiretorio(getAbaAtual(), valor); ExcluirDados(getAbaAtual(), valor); arvoreStore.Remove(ref iter); tabelaStore.Clear(); CarregarDados(pLog, false, false); form.GdkWindow.Cursor = new Gdk.Cursor(Gdk.CursorType.Arrow); } } }
public void Hide() { if (Dialogo != null) { Dialogo.Hide(); } }
private void Comparar(string sCaminhoDir1, string sCaminhoDir2) { string sSQL; Aba aba1, aba2; int tamLista; aba1 = AbaBO.Instancia.pegaAbaPorOrdem(catalogador.listaAbas, cmbAba1.Active + 1); aba2 = AbaBO.Instancia.pegaAbaPorOrdem(catalogador.listaAbas, cmbAba2.Active + 1); sSQL = SQLCompara(aba1, aba2, sCaminhoDir1, sCaminhoDir2); listaCompara = DiretorioBO.Instancia.carregarDiretorio(sSQL, "consultaarquivo", frmCompararDiretorioProgresso); if (listaCompara.Count > 0) { Tabela.Instancia.Carregar(true, tabelaCompara, listaCompara, catalogador.listaExtensoes, pb); tamLista = listaCompara.Count; LabStatus2.Text = tamLista.ToString(); btnSalvarLog.Sensitive = true; } else { Dialogo.mensagemInfo("Nenhuma diferença encontrada!"); } }
public void ExcluirDiretorioSelecionado(IProgressoLog pLog) { TreeView arvore = getArvoreAtual(); TreeNode path = arvore.SelectedNode; if (path.Text.Length > 0) { ListView tabela = getTabelaAtual(); bool res = Dialogo.confirma("Tem Certeza, que você deseja excluir este diretório, isto implicará na destruição de todos os seus items catalogados?"); if (res) { form.Cursor = Cursors.WaitCursor; DiretorioBO.Instancia.excluirDiretorio(getAbaAtual(), path.Text); ExcluirDados(getAbaAtual(), path.Text); path.Remove(); tabela.Clear(); CarregarDados(pLog, false, false); form.Cursor = Cursors.Default; } } }
public void ImportarArquivo(StringList log, IProgressoLog pLog) { int nResultado; form.odImportar.Filter = "Arquivo XML (*.xml)|*.xml"; DialogResult retval = form.odImportar.ShowDialog(); if (retval == DialogResult.OK) { FileInfo arquivo = new FileInfo(form.odImportar.FileName); if (arquivo.Exists) { form.Cursor = Cursors.WaitCursor; nResultado = DiretorioBO.Instancia.importarDiretorioViaXML( getAbaAtual(), arquivo.FullName, listaDiretorioPai, pLog); if (nResultado == -1) { Dialogo.mensagemErro("Importação não realizada!"); } else if (nResultado == -2) { Dialogo.mensagemErro("Este diretório já existe no catálogo!"); } else { FinalizaImportacao(pLog); } form.Cursor = Cursors.Default; } } }
public void ExcluirAbaAtiva(IProgressoLog pLog) { Aba aba; int indiceSel = form.tabControl1.SelectedIndex; if (indiceSel > 0) { bool res = Dialogo.confirma("Tem Certeza, que você deseja excluir esta aba, \n" + "isto implicará na destruição de todos os seus itens catalogados?"); if (res) { form.Cursor = Cursors.WaitCursor; aba = getAbaAtual(); ExcluirDados(aba, ""); AbaBO.Instancia.excluirAba(aba); form.tabControl1.Controls.RemoveAt(indiceSel); CarregarDados(pLog, false, false); form.barraStatus.Items[1].Text = ""; form.Cursor = Cursors.Default; } } else { Dialogo.mensagemErro("A primeira Aba não pode ser excluída!"); } }
void MenuIncluirExtensaoClick(object sender, EventArgs e) { StringList log; DialogResult retval = odEscolhaArquivo.ShowDialog(); if (retval == DialogResult.OK) { FileInfo arquivo = new FileInfo(odEscolhaArquivo.FileName); if (arquivo.Exists) { log = new StringList(); if (ExtensaoBO.Instancia.SalvarExtensao( catalogador.listaExtensoes, arquivo.Name, arquivo.FullName, log)) { CarregarExtensoesNaGrid(); Dialogo.mensagemInfo("Extensão salva com sucesso!"); } else { Dialogo.mensagemInfo("Extensão já existe cadastrada!"); } } } }
protected void OnIncluirExtensaoActionActivated(object sender, EventArgs e) { StringList log; if (EscolhaArquivo.abrirArquivo(EscolhaArquivo.FILTRO_IMAGEM)) { FileInfo arquivo = new FileInfo(EscolhaArquivo.NomeArquivo); if (arquivo.Exists) { log = new StringList(); if (ExtensaoBO.Instancia.SalvarExtensao( catalogador.listaExtensoes, arquivo.Name, arquivo.FullName, log)) { CarregarExtensoesNaGrid(); Dialogo.mensagemInfo("Extensão salva com sucesso!"); } else { Dialogo.mensagemInfo("Extensão já existe cadastrada!"); } } } }
public IEnumerator PrepararDialogoCoroutine(Interactuable interactuableActual, Dialogo dialogo, int IDEvento) { if (TPController.instance.CurrentState != TPController.State.Normal) { dialogosEnCola++; while (TPController.instance.CurrentState != TPController.State.Normal) { yield return(null); } yield return(StartCoroutine(EmpezarDialogo(interactuableActual, dialogo))); dialogosEnCola--; } else if (dialogosEnCola != 0) { while (dialogosEnCola != 0) { yield return(null); } yield return(StartCoroutine(EmpezarDialogo(interactuableActual, dialogo))); } else { yield return(StartCoroutine(EmpezarDialogo(interactuableActual, dialogo))); } //El evento se guarda cuando acaba el dialogo if (IDEvento != -1) { ManagerRutina.instance.GuardaEvento(IDEvento); } }
public void ComecaDialogo(Dialogo dialogo) { //Debug.Log("Iniciando Dialogo"); emDialogo = true; Cronometro.current.Tempo = Time.timeSinceLevelLoad / 2f; Cronometro.current.enabled = false; if (humano != null) { humano.enabled = false; } animator.SetBool("EstaAberto", true); imagemRosto.sprite = dialogo.rosto; nome.text = dialogo.nome; frases.Clear(); if (dialogo.trocaDeAlvo) { ControleDaCamera.current.TrocaAlvo(dialogo.novoAlvo); ControleDaCamera.current.velocidadeDaCamera = dialogo.velocidadeCamera; } foreach (string frase in dialogo.frases) { frases.Enqueue(frase); } ProximaFrase(); }
public void Pesquisar() { TreeView arvoreLocal = getArvoreAtual(); TreeStore arvoreStore = (TreeStore)arvoreLocal.Model; ListStore tabelaStore = (ListStore)form.TabelaPesquisa.Model; TreeIter iter = new TreeIter(); if (arvoreStore.IterNChildren() > 0) { if (form.EdtPesquisa.Text.Length >= 2) { form.SPPesquisa.Child2.Visible = true; CarregarArquivosLista(false, form.TabelaPesquisa, form.EdtPesquisa.Text); if (tabelaStore.GetIterFirst(out iter)) { form.TabelaPesquisa.Selection.SelectIter(iter); } } else { form.SPPesquisa.Child2.Visible = false; tabelaStore.Clear(); Dialogo.mensagemInfo("A pesquisa só é feita com pelo menos 2 caracteres!"); } } }
public void ExcluirAbaAtiva(IProgressoLog pLog) { Aba aba; int indiceSel = form.tabControl1.Page; if (indiceSel > 0) { bool res = Dialogo.confirma("Tem Certeza, que você deseja excluir esta aba, \n" + "isto implicará na destruição de todos os seus itens catalogados?"); if (res) { form.GdkWindow.Cursor = new Gdk.Cursor(Gdk.CursorType.Watch); aba = getAbaAtual(); ExcluirDados(aba, ""); AbaBO.Instancia.excluirAba(aba); form.tabControl1.RemovePage(indiceSel); CarregarDados(pLog, false, false); form.LabStatus2.Text = ""; form.GdkWindow.Cursor = new Gdk.Cursor(Gdk.CursorType.Arrow); } } else { Dialogo.mensagemErro("A primeira Aba não pode ser excluída!"); } }
public IHttpActionResult GetDialogos(int idUsuario, int idCliente) { if (idCliente == 0 || idUsuario == 0) { return(BadRequest()); } try { Dialogo dialogo = db.Dialogos.Where(d => d.Cliente.ID == idCliente && !d.Resuelta) .FirstOrDefault(); Usuario a_asignar = db.Usuarios.Find(idUsuario); if (a_asignar != null && dialogo != null) { //dialogo.Mensajes.ForEach(m => m.Usuario = a_asignar); dialogo.Usuario = a_asignar; db.SaveChanges(); return(Ok(dialogo)); } return(BadRequest()); } catch (Exception ex) { return(InternalServerError(ex)); } }
public void ImportarArquivo(StringList log, IProgressoLog pLog) { int nResultado; if (EscolhaArquivo.abrirArquivo(EscolhaArquivo.FILTRO_XML)) { FileInfo arquivo = new FileInfo(EscolhaArquivo.NomeArquivo); if (arquivo.Exists) { form.GdkWindow.Cursor = new Gdk.Cursor(Gdk.CursorType.Watch); nResultado = DiretorioBO.Instancia.importarDiretorioViaXML( getAbaAtual(), arquivo.FullName, listaDiretorioPai, pLog); if (nResultado == -1) { Dialogo.mensagemErro("Importação não realizada!"); } else if (nResultado == -2) { Dialogo.mensagemErro("Este diretório já existe no catálogo!"); } else { FinalizaImportacao(pLog); } form.GdkWindow.Cursor = new Gdk.Cursor(Gdk.CursorType.Arrow); } } }
public void MostrarAviso(Dialogo dialogo) { dialogoAtual = dialogo; index = 0; mostrandoAviso = true; Avancar(); }
void ActivarConversacionNPC() { conversacion.SetActive(true); this.misionActual = AdministradorDeMisiones.instance.GetMisionParaMi(this.nombreNpc); this.dialogoActual = GetDialogoCorrespondienteAMisionActual(); }
public void MostrarDialogo(string _nombre) { Limpiar(); if (!RecuerdaElecciones) { lineasElegidas.Clear(); } dialogoActual = dialogos.ObtenerDialogo(_nombre); if (dialogoActual != null) { personajeActual = _nombre; ArmoOpciones(dialogoActual.Introduccion, dialogoActual.LineasIniciales); Mostrar(); foreach (var linea in dialogoActual.LineasIniciales) { if (linea.AudioIntro != "") { PlayAudio(linea.AudioIntro, 0); } } } if (!dialogoEscuchado.ContainsKey(_nombre)) { dialogoEscuchado.Add(_nombre, 0); } dialogoEscuchado[_nombre] = dialogoEscuchado[_nombre] + 1; lineaActual = null; }
public ActionResult UsuarioHandler(int idUsuario, int idCliente) { if (Session["admin"] == null) { return(RedirectToAction("Create", "Login")); } Dialogo dialogo = null; _ = new HttpClient(); Uri uri = new Uri(_url + "/api/dialogos/cambiar-usuario?idUsuario=" + idUsuario + "&idCliente=" + idCliente); HttpClient cliente = new HttpClient(); var param = new { idUsuario, idCliente }; Task <HttpResponseMessage> tarea = cliente.PostAsJsonAsync(uri, param); tarea.Wait(); if (tarea.Result.IsSuccessStatusCode) { Task <string> tarea2 = tarea.Result.Content.ReadAsStringAsync(); tarea2.Wait(); string json = tarea2.Result; dialogo = JsonConvert.DeserializeObject <Dialogo>(json); } else { ViewBag.Error = tarea.Result.StatusCode; } return(RedirectToAction("Index")); }
public void ComecarDialogo(Dialogo _dialogo, NpcDialogo _npcDialogoQA) { if (npcDialogo == null && _dialogo != null) { GameManager.UISendoUsada(); dialogo = _dialogo; for (int i = 0; i < dialogo.nodulos.Length; i++) { for (int j = 0; j < dialogo.nodulos[i].respostas.Count; j++) { if (!ManagerQuest.VerifyQuestIsAvailable(dialogo.nodulos[i].respostas[j].questIndex)) { dialogo.nodulos[i].respostas.RemoveAt(j); j--; } } } npcDialogo = _npcDialogoQA; if (npcDialogo) { questsIndex.Add(npcDialogo.questIndex); } InicializarDialogo(); } }
// Use this for initialization void Start() { dialogo = FindObjectOfType(typeof(Dialogo)) as Dialogo; gameController = FindObjectOfType(typeof(GameController)) as GameController; tutorialGeral = FindObjectOfType(typeof(TutorialGeral)) as TutorialGeral; txt_Time.SetText(tempo.ToString()); StartCoroutine("tempoModoExploracao"); }
void FrmImportarDiretorioShown(object sender, EventArgs e) { string sLog; foreach (Importar importar in this.listaImportar) { catalogador.diretorioOrdem.Ordem = 1; if (!bSubDiretorio) { Cursor = Cursors.WaitCursor; try { ImportarBO.Instancia.ImportacaoCompleta(importar, catalogador.diretorioOrdem, catalogador.listaExtensoes, frmImportarDiretorioProgresso); } catch (Exception ex) { Dialogo.mensagemErro(ex.Message); } Cursor = Cursors.Default; } else { if (!DiretorioBO.Instancia.verificaCodDir(importar.Aba, importar.RotuloRaiz, catalogador.listaDiretorioPai)) { Cursor = Cursors.WaitCursor; try { ImportarBO.Instancia.ImportacaoCompleta(importar, catalogador.diretorioOrdem, catalogador.listaExtensoes, frmImportarDiretorioProgresso); } catch (Exception ex) { Dialogo.mensagemErro(ex.Message); } Cursor = Cursors.Default; } else { Dialogo.mensagemInfo("O diretório já existe no catálogo!"); } } } if (frmPrincipal.menuGravarLogImportacao.Selected) { if (memoImportaDir.Lines.Length > 0) { sLog = Rotinas.ExtractFilePath(Application.ExecutablePath)+ Path.DirectorySeparatorChar + Rotinas.formataDate(Rotinas.FORMATO_DHARQUIVO, DateTime.Now) + "_Importacao.log"; StringList log = new StringList(); log.AddRange(memoImportaDir.Lines); log.SaveToFile(sLog); } } this.Close(); }
public void IniciarDialogo(Dialogo dialogo) { texto.text = dialogo.titulo; informacion.Clear(); foreach (string info in dialogo.oraciones) { informacion.Enqueue(info); } MostrarSiguienteInfo(); }
//Ejecuta el diálogo con los parámetros indicados public override void EjecutarEvento() { if (!ejecutado) { Interactuable interactuable = null; Dialogo dialogo = Dialogo.BuscarDialogo(IDInteractuable, IDDialogo); ManagerDialogo.instance.PrepararDialogo(interactuable, dialogo, ID); ejecutado = true; } }
public Dialogo[] DialogosProfessorPosAula() { var quantidade = professor.falasGeneralistas.Length; var dialogos = new Dialogo[quantidade]; for (int i = 0; i < quantidade; i++) { dialogos[i] = professor.falasGeneralistas[i].dialogos[0]; } return(dialogos); }
//Busca el fichero del diálogo en el directorio correspondiente public void CargaDialogo() { //Si existe un fichero guardado, cargamos ese fichero, sino cargamos el fichero por defecto if (System.IO.File.Exists(Manager.rutaInterDialogosGuardados + IDInteractuable.ToString() + "-" + IDDialogo.ToString() + ".xml")) { dialogo = Dialogo.LoadDialogo(Manager.rutaInterDialogosGuardados + IDInteractuable.ToString() + "-" + IDDialogo.ToString() + ".xml"); } else { dialogo = Dialogo.LoadDialogo(Manager.rutaInterDialogos + IDInteractuable.ToString() + "-" + IDDialogo.ToString() + ".xml"); } }
public void EmpezarDialogo(Dialogo dialogo) { cajaDialogo.SetActive(true); frases.Clear(); foreach (string frase in dialogo.frases) { frases.Enqueue(frase); } DesplegarProximaFrase(); }
public void StartDialogo(Dialogo dialogo) { Debug.Log("Empezar conversación con " + dialogo.nombre); nombreTexto.text = dialogo.nombre; frases.Clear(); foreach (string frase in dialogo.frases) { frases.Enqueue(frase); } DisplayNextFrase(); }
public IEnumerator EmpezarDialogo(Interactuable interactuableActual, Dialogo dialogo) { this.dialogo = dialogo; this.interactuable = interactuableActual; TPController.instance.SetState(TPController.State.Dialogo); TPCamera.instance.ToDialogMode(); ManagerTiempo.instance.SetPausa(true); Manager.instance.StopNavMeshAgents(); dialogWindow.SetActive(true); Cursor.visible = true; //Muestra el cursor del ratón //Iniciamos el dialogo en una couroutine para saber cuando ha acabado yield return StartCoroutine(Conversacion()); }
public DatosAccionDialogo() { dialogo = new Dialogo(); }
public void PrepararDialogo(Interactuable interactuableActual, Dialogo dialogo, int IDEvento) { StartCoroutine(PrepararDialogoCoroutine(interactuableActual, dialogo, IDEvento)); }
public IEnumerator PrepararDialogoCoroutine(Interactuable interactuableActual, Dialogo dialogo, int IDEvento) { if(TPController.instance.CurrentState != TPController.State.Normal) { dialogosEnCola++; while(TPController.instance.CurrentState != TPController.State.Normal) { yield return null; } yield return StartCoroutine(EmpezarDialogo(interactuableActual, dialogo)); dialogosEnCola--; } else if(dialogosEnCola != 0) { while(dialogosEnCola != 0) { yield return null; } yield return StartCoroutine(EmpezarDialogo(interactuableActual, dialogo)); } else yield return StartCoroutine(EmpezarDialogo(interactuableActual, dialogo)); if(IDEvento != -1) ManagerRutina.instance.GuardaEvento(IDEvento); }
private IEnumerator Conversacion() { //Inicializamos variables locales int numDialog = 0; int numtema = -1; //solo usado con mensajes, -1 si no hay tema, x si hay tema int nodeID = 0; bool conversacionActiva = true; Dialogue dialogue = new Dialogue(); SetState(State.Intro_Texto);//Estado inicial de la conversación //Si el diálogo tiene intros activas, asignamos un estado, sino otro if(dialogo.DevuelveNumeroIntrosActivas(ref numDialog) != 0) { dialogue = dialogo.DevuelveDialogoIntro(numDialog); } else if ((dialogo.DevuelveNumeroMensajesActivos() + dialogo.DevuelveNumeroTemaMensajesActivos()) != 0) { SetState(State.Mensajes_Menu); } //El dialogo está vacío, no contiene ningún elemento activo //Mostramos un mensaje por defecto else { dialogo = Dialogo.LoadDialogo(Manager.rutaDialogoVacio); dialogue = dialogo.intros[0].DevuelveDialogo(); } //Bucle que controla la conversación while(conversacionActiva) { switch(state) { case State.Intro_Texto: //Cuando la intro muestra el texto DialogueNode dialogueNode = dialogue.DevuelveNodo(nodeID); selectedOption = nodeID; DisplayNodeText (dialogueNode); //Muestra el texto del nodo while (selectedOption == nodeID) { yield return null; } switch(selectedOption) { case -3: //La conversación acaba RecorreDialogo(ref numDialog, numtema, dialogueNode); //Dejar si el dialogo se deja como ahora EliminarDialogo(ref numDialog, numtema); conversacionActiva = false; break; case -2: //Se muestran las respuestas RecorreDialogo(ref numDialog, numtema, dialogueNode); //Dejar si el dialogo se deja como ahora EliminarDialogo(ref numDialog, numtema); SetState(State.Mensajes_Menu); break; case -1: //Acaba el dialogo actual RecorreDialogo(ref numDialog, numtema, dialogueNode); EliminarDialogo(ref numDialog, numtema); //Si hay más dialogos, vamos al siguiente dialogo if (dialogo.AvanzaIntro(ref numDialog)) { dialogue = dialogo.DevuelveDialogoIntro(numDialog); nodeID = 0; } //Sino, se muestran las respuestas else { SetState(State.Mensajes_Menu); } break; default: //Si el nodo tiene opciones de dialogo, se muestran, sino, se pasa al siguiente texto RecorreDialogo(ref numDialog, numtema, dialogueNode); if(dialogueNode.DevuelveNumeroOpciones() > 0) { SetState(State.Intro_Opciones); } //Comprobamos si se puede avanzar en el dialogo else if(dialogue.AvanzaDialogue(nodeID)) { //es lo mismo que node_id++; nodeID = selectedOption; } //Si hemos llegado al final del dialogo, acabamos el dialogo actual else { EliminarDialogo(ref numDialog, numtema); //Si hay más dialogos, vamos al siguiente dialogo if (dialogo.AvanzaIntro(ref numDialog)) { dialogue = dialogo.DevuelveDialogoIntro(numDialog); nodeID = 0; } //Sino, se muestran las respuestas else { SetState(State.Mensajes_Menu); } } break; } //Si la lista de objetos recientes tiene algún objeto, mostramos un popup de los objetos obtenidos if(Manager.instance.DevuelveNumeroObjetosRecientes() != 0) yield return StartCoroutine(InterfazPopUpObjetos()); break; case State.Intro_Opciones: //Cuando la intro muestra las opciones DisplayNodeOptions(dialogue.DevuelveNodo(nodeID)); selectedOption = nodeID; while(selectedOption == nodeID) { yield return null; } switch(selectedOption) { case -3: //La conversación acaba EliminarDialogo(ref numDialog, numtema); conversacionActiva = false; break; case -2: //Se muestran las respuestas EliminarDialogo(ref numDialog, numtema); SetState(State.Mensajes_Menu); break; case -1: //Acaba el dialogo actual EliminarDialogo(ref numDialog, numtema); //Si hay más dialogos, vamos al siguiente dialogo if (dialogo.AvanzaIntro(ref numDialog)) { dialogue = dialogo.DevuelveDialogoIntro(numDialog); nodeID = 0; SetState(State.Intro_Texto); } //Sino, se muestran las respuestas else { SetState(State.Mensajes_Menu); } break; default: //Se sigue con la conversación, donde el nodo indique nodeID = selectedOption; SetState(State.Intro_Texto); break; } break; case State.Mensajes_Menu: //Cuando se muestran el menu de mensajes if ((dialogo.DevuelveNumeroMensajesActivos() + dialogo.DevuelveNumeroTemaMensajesActivos()) != 0) { DisplayMensajes(); selectedOption = -4; while (selectedOption == -4) { yield return null; } switch(selectedOption) { //Salimos del dialogo case -3: case -2: case -1: conversacionActiva = false; break; //Cargamos el dialogo escogido default: //Se ha seleccionado un mensajeTema //La selected_option está en el intérvalo [0-numTemaMensajes] if (selectedOption < dialogo.DevuelveNumeroTemaMensajes()) { nodeID = selectedOption; numtema = selectedOption; SetState(State.Mensajes_Tema); } //Se ha seleccionado un mensaje sin tema //La selected_option está en el intérvalo [numTemaMensajes+1-numTemaMensajes+numMensajes(sueltos)] else { numDialog = selectedOption - dialogo.DevuelveNumeroTemaMensajes(); numtema = -1; Mensaje mensaje = dialogo.DevuelveMensaje(numtema, numDialog); if(mensaje.GetType() == typeof(MensajeDialogo)) { MensajeDialogo mensajeDialogo = mensaje as MensajeDialogo; dialogue = mensajeDialogo.DevuelveDialogo(); nodeID = 0; SetState(State.Mensajes_Texto); } else if(mensaje.GetType() == typeof(MensajeTienda)) { MensajeTienda mensajeTienda = mensaje as MensajeTienda; mensajeTienda.MostrarTienda(); } } break; } } else { conversacionActiva = false; } break; case State.Mensajes_Tema: //Cuando se muestran los mensajes de un tema DisplayTemaMensajes(dialogo.DevuelveTemaMensaje(nodeID)); selectedOption = -4; while (selectedOption == -4) { yield return null; } switch(selectedOption) { //Salimos del dialogo case -3: case -1: conversacionActiva = false; break; //Vamos al menú mensajes case -2: SetState(State.Mensajes_Menu); break; //Cargamos el mensaje escogido default: numDialog = selectedOption; Mensaje mensaje = dialogo.DevuelveMensaje(numtema, numDialog); if(mensaje.GetType() == typeof(MensajeDialogo)) { MensajeDialogo mensajeDialogo = mensaje as MensajeDialogo; dialogue = mensajeDialogo.DevuelveDialogo(); nodeID = 0; SetState(State.Mensajes_Texto); } else if(mensaje.GetType() == typeof(MensajeTienda)) { MensajeTienda mensajeTienda = mensaje as MensajeTienda; mensajeTienda.MostrarTienda(); } break; } break; case State.Mensajes_Texto: //Cuando se muestra el texto del mensaje DialogueNode diaNode = dialogue.DevuelveNodo(nodeID); selectedOption = nodeID; DisplayNodeText(diaNode); while(selectedOption == nodeID) { yield return null; } //Cambiar sistema de dialogo si sigue con botones //salir y cambiar_tema como ahora switch(selectedOption) { case -3: //La conversación acaba RecorreDialogo(ref numDialog, numtema, diaNode); //Dejar si el dialogo se deja como ahora EliminarDialogo(ref numDialog, numtema); conversacionActiva = false; break; case -2: //Se muestran los mensajes RecorreDialogo(ref numDialog, numtema, diaNode); //Dejar si el dialogo se deja como ahora EliminarDialogo(ref numDialog, numtema); SetState(State.Mensajes_Menu); break; case -1: //Acaba el dialogo actual RecorreDialogo(ref numDialog, numtema, diaNode); EliminarDialogo(ref numDialog, numtema); SetState(State.Mensajes_Menu); break; default: //Si el nodo tiene opciones de dialogo, se muestran, sino, se pasa al siguiente texto RecorreDialogo(ref numDialog, numtema, diaNode); if(diaNode.DevuelveNumeroOpciones() > 0) { SetState(State.Mensajes_Opciones); } //Comprobamos si se puede avanzar en el dialogo else if(dialogue.AvanzaDialogue(nodeID)) { //es lo mismo que node_id++; nodeID = selectedOption; } //Si hemos llegado al final del dialogo, acabamos el dialogo actual else { EliminarDialogo(ref numDialog, numtema); if(numtema != -1) { nodeID = numtema; SetState(State.Mensajes_Tema); } else SetState(State.Mensajes_Menu); } break; } //Si la lista de objetos recientes tiene algún objeto, mostramos un popup de los objetos obtenidos if(Manager.instance.DevuelveNumeroObjetosRecientes() != 0) yield return StartCoroutine(InterfazPopUpObjetos()); break; case State.Mensajes_Opciones: //Cuando se muestran las opciones del mensaje DisplayNodeOptions(dialogue.DevuelveNodo(nodeID)); selectedOption = -4; while(selectedOption == -4) { yield return null; } switch(selectedOption) { case -3: //La conversación acaba EliminarDialogo(ref numDialog, numtema); conversacionActiva = false; break; case -2: //Se muestran las respuestas EliminarDialogo(ref numDialog, numtema); if(numtema != -1) { nodeID = numtema; SetState(State.Mensajes_Tema); } else SetState(State.Mensajes_Menu); break; case -1: //Acaba el dialogo actual EliminarDialogo(ref numDialog, numtema); if(numtema != -1) { nodeID = numtema; SetState(State.Mensajes_Tema); } else SetState(State.Mensajes_Menu); break; default: //Si el nodo tiene opciones de dialogo, se muestran, sino, se pasa al siguiente texto nodeID = selectedOption; if(numtema != -1) { nodeID = numtema; SetState(State.Mensajes_Tema); } else SetState(State.Mensajes_Menu); break; } break; } } FinDialogo(); }