/// <summary> /// Borrar una pregunta /// </summary> /// <param name="pregunta">objeto tipo PreguntaUsuarioBase</param> public void BorrarPregunta(PreguntaUsuarioBase pregunta) { listaPreguntasUsuario.Remove(pregunta); }
/// <summary> /// Borrar varias preguntas /// </summary> /// <param name="preguntas">Array de tipo PreguntaUsuarioBase</param> public void BorrarPregunta(PreguntaUsuarioBase[] preguntas) { foreach (PreguntaUsuarioBase pregunta in preguntas) { listaPreguntasUsuario.Remove(pregunta); } }
/// <summary> /// Añade una pregunta a la respuesta del NPC /// </summary> /// <param name="pregunta">objeto tipo PreguntaUsuarioBase</param> public void AddPregunta(PreguntaUsuarioBase pregunta) { listaPreguntasUsuario.Add(pregunta); }
/// <summary> /// Añade varias preguntas a la respuesta /// </summary> /// <param name="preguntas">Array de tipo PreguntaUsuarioBase</param> public void AddPregunta(PreguntaUsuarioBase[] preguntas) { listaPreguntasUsuario.AddRange(preguntas); }
/// <summary> /// Constructor de la Clase<see cref="RespuestaNPCBase"/> /// </summary> /// <param name="texto">Texto de la respuesta del NPC</param> /// <param name="id">Id de la respuesta</param> /// <param name="preguntas">Array de tipo PreguntaUsuarioBase con respuesta a la pregunta del NPC</param> public RespuestaNPCBase(string texto, int id, PreguntaUsuarioBase[] preguntas) { Inicializar_Listas(); textoRespuesta = texto; idRespuestaNPC = id; AddPregunta(preguntas); }
public RespuestaNPCBase(string texto, int id, PreguntaUsuarioBase[] preguntas, bool comp, Localizaciones localizacion, bool ciega, int direccion) { Inicializar_Listas (); textoRespuesta = texto; idRespuestaNPC = id; AddPregunta(preguntas); comprobacion = comp; localizacionSeleccionada = localizacion; sinRespuesta = ciega; direccionRespuesta = direccion; }
/// <summary> /// Constructor de la clase <see cref="RespuestaNPCBase"/> /// </summary> /// <param name="preguntas">array de tipo Preguntas Base con respuestas a la pregunta</param> public RespuestaNPCBase(PreguntaUsuarioBase[] preguntas) { Inicializar_Listas (); AddPregunta(preguntas); }
/// <summary> /// Ordena las preguntas para que la ultima de ellas sea la de volver al menu, salir o volver a la pregunta anterior /// </summary> /// <param name="lista">Lista de PreguntaUsuarioBase a ordenar</param> /// <return>Lista de PreguntaUsuarioBase ordenadas</return> private PreguntaUsuarioBase[] Ordenar_Preguntas(PreguntaUsuarioBase[] preguntas) { PreguntaUsuarioBase ultimaPregunta = preguntas.ToList ().Find (x => x.IdRespuestaNPC == 0); if (ultimaPregunta != null) { List<PreguntaUsuarioBase> preguntasAux = new List<PreguntaUsuarioBase>(); foreach (PreguntaUsuarioBase pregunta in preguntas) { if(!pregunta.Equals(ultimaPregunta)) preguntasAux.Add(pregunta); } preguntasAux.Add(ultimaPregunta); preguntas = preguntasAux.ToArray(); } return preguntas; }
/// <summary> /// Filtra las respuestas a la pregunta segun haya avanzado el personaje o tirada /// </summary> /// <param name="lista">Lista de PreguntaUsuarioBase a evaluar</param> /// <return>Lista de PreguntaUsuarioBase evaluadas y filtradas</return> private PreguntaUsuarioBase[] Filtrar_Preguntas(PreguntaUsuarioBase[] lista) { List<PreguntaUsuarioBase> nuevasPreguntas = new List<PreguntaUsuarioBase> (); foreach (PreguntaUsuarioBase preguntaNueva in lista) { if (preguntaNueva.ComprobacionPregunta) { if (preguntaNueva.ComprobacionAccion != Acciones.Ninguna) { if(GameCenter.InstanceRef.controladoraJuego.jugadorActual.AccionRealizada(preguntaNueva.ComprobacionAccion)) nuevasPreguntas.Add(preguntaNueva); } else { if (preguntaNueva.ComprobacionEscenas != Escenas.ninguna) { if(GameCenter.InstanceRef.controladoraJuego.jugadorActual.EscenaVista(preguntaNueva.ComprobacionEscenas)) nuevasPreguntas.Add(preguntaNueva); } else { if (preguntaNueva.ComprobacionHabilidad != Habilidades.Ninguna) { int valorHabilidad = GameCenter.InstanceRef.controladoraJuego.jugadorActual.HabilidadesJugador.Devolver_Valor_Segun_Enum (preguntaNueva.ComprobacionHabilidad); int resultado = GameCenter.InstanceRef.controladoraJuego.Lanzar_Dados ("1D100"); if (resultado < valorHabilidad) { //Tirada Conseguida nuevasPreguntas.Add(preguntaNueva); preguntaNueva.ComprobacionPregunta = false; preguntaNueva.ComprobacionHabilidad = Habilidades.Ninguna; } else { //Tirada no Conseguida nuevaRespuesta.BorrarPregunta(preguntaNueva); } } else { if (preguntaNueva.ComprobacionInteractuables != Interactuables.Ninguno) { if(GameCenter.InstanceRef.controladoraJuego.jugadorActual.ObjetoVisto(preguntaNueva.ComprobacionInteractuables)) nuevasPreguntas.Add(preguntaNueva); } } } } } else nuevasPreguntas.Add(preguntaNueva); } return Ordenar_Preguntas(nuevasPreguntas.ToArray()); }
public void Reestructurar_Respuestas(int numeroPregunta, bool inicio) { PreguntaUsuarioBase pregunta = new PreguntaUsuarioBase(); if (inicio) nuevaRespuesta = GameCenter.InstanceRef.controladoraJuego.interactuablePulsado.Devolver_Respuesta (numeroPregunta); else { pregunta = GameCenter.InstanceRef.controladoraJuego.interactuablePulsado.Devolver_Pregunta (numeroPregunta); pregunta.PreguntaEjecutada = true; if (GameCenter.InstanceRef.controladoraJuego.interactuablePulsado.PreguntaConTirada (numeroPregunta)) { int valorHabilidad = GameCenter.InstanceRef.controladoraJuego.jugadorActual.HabilidadesJugador.Devolver_Valor_Segun_Enum (pregunta.ComprobacionHabilidad); int resultado = GameCenter.InstanceRef.controladoraJuego.Lanzar_Dados ("1D100"); pregunta.IdRespuestaNPC = (resultado < valorHabilidad) ? pregunta.IdRespuestaAcierto : pregunta.IdRespuestaFallo; } nuevaRespuesta = GameCenter.InstanceRef.controladoraJuego.interactuablePulsado.Devolver_Respuesta (pregunta.IdRespuestaNPC); } //Si existe respuesta if (nuevaRespuesta != null) { Blanquear_Texto_Lateral ("yellow", "white"); //Si el texto lateral esta vacio if (textoLateral.text != string.Empty) { float anteriorSizeCajaTexto = textoLateralOpciones.rectCajaTexto.rect.height; if(pregunta.TextoPregunta != null) Insertar_Ventana_Lateral_Texto (pregunta.TextoPregunta, colorTexto.verde, tipoTexto.negrita); Insertar_Ventana_Lateral_Texto (nuevaRespuesta.TextoRespuesta, colorTexto.amarillo); Deslizar_Ventana_Lateral (anteriorSizeCajaTexto); } //Si el texto lateral no esta vacio else Insertar_Ventana_Lateral_Texto (nuevaRespuesta.TextoRespuesta, colorTexto.amarillo); //Comprobacion si la respuesta tiene un desbloqueo o accion asociada if(nuevaRespuesta.Comprobacion) { //Desbloqueo de localizacion if(nuevaRespuesta.LocalizacionSeleccionada != Localizaciones.Ninguna) { if(!GameCenter.InstanceRef.controladoraJuego.jugadorActual.LocalizacionesDescubiertas.Contains(nuevaRespuesta.LocalizacionSeleccionada)) { Insertar_Ventana_Lateral_Texto(nuevaRespuesta.LocalizacionSeleccionada, colorTexto.verde); GameCenter.InstanceRef.controladoraJuego.jugadorActual.AddLocalizacionDescubierta(nuevaRespuesta.LocalizacionSeleccionada); } } } //Comprobacion de que la respuesta no tiene pregunta asociada y vuelve a una pregunta anterior if(nuevaRespuesta.SinRespuesta) nuevaRespuesta = GameCenter.InstanceRef.controladoraJuego.interactuablePulsado.Devolver_Respuesta (nuevaRespuesta.DireccionRespuesta); //Generamos las preguntas asociadas a la respuesta listaPreguntas.Generar_Preguntas (Filtrar_Preguntas (nuevaRespuesta.MostrarPreguntas ())); } //Sino existe respuesta else { Vaciar_Texto_Lateral(); Vaciar_Panel_Preguntas(); textoInferiorOpciones.gameObject.SetActive (true); panelPreguntasOpciones.gameObject.SetActive (false); panelObjetosOpciones.Activar ("Hablar"); } }
public void Generar_Preguntas(PreguntaUsuarioBase[] preguntas) { GameCenter.InstanceRef.controladoraGUI.textoInferiorOpciones.gameObject.SetActive (false); GameCenter.InstanceRef.controladoraGUI.panelPreguntasOpciones.gameObject.SetActive (true); itemCount = preguntas.Length; RectTransform rowRectTransform = itemPrefab.GetComponent<RectTransform>(); cuerpo = Buscar_Contenedor ("PanelPreguntas"); foreach (Transform hijo in cuerpo.transform) { GameObject.Destroy(hijo.gameObject); } GameCenter.InstanceRef.controladoraGUI.panelPreguntasOpciones.rectPanelPreguntas.offsetMax = new Vector2(0,0); RectTransform containerRectTransform = cuerpo.GetComponent<RectTransform> (); containerRectTransform.offsetMax = new Vector2 (0, 0); containerRectTransform.offsetMin = new Vector2 (0, 0); float width = containerRectTransform.rect.width; float height = rowRectTransform.rect.height; float posicionUltimoElemento = 0; int j = 0; for (int i = 0; i < itemCount; i++) { if (i % columnCount == 0) j++; GameObject newItem = Instantiate(itemPrefab) as GameObject; newItem.name = preguntas[i].IdPreguntaUsuario.ToString(); Text contenedorTexto = newItem.GetComponent<Button>().GetComponentInChildren<Text>(); contenedorTexto.text = preguntas[i].PreguntaEjecutada ? "<color=white>- " + preguntas[i].TextoPregunta + "</color>" : "<color=yellow>- " + preguntas[i].TextoPregunta + "</color>"; //contenedorTexto.text = "- " + preguntas[i].TextoPregunta; //contenedorTexto.color = preguntas[i].PreguntaEjecutada ? new Color(186,179,18) : new Color(244,234,4); newItem.transform.SetParent(cuerpo.transform); RectTransform rectTransform = newItem.GetComponent<RectTransform>(); float x = -containerRectTransform.rect.width / 2 + width * (i % columnCount); if(GameCenter.InstanceRef.controladoraJuego.Devolver_Tamanyo_Cadena(contenedorTexto.text, 16) > containerRectTransform.rect.width) j++; float y = containerRectTransform.rect.height / 2 - height * j; rectTransform.offsetMin = new Vector2(x, y); x = rectTransform.offsetMin.x + width; if(GameCenter.InstanceRef.controladoraJuego.Devolver_Tamanyo_Cadena(contenedorTexto.text, 16) > containerRectTransform.rect.width) y = rectTransform.offsetMin.y + (height * 2) ; else y = rectTransform.offsetMin.y + height; rectTransform.offsetMax = new Vector2(x, y); posicionUltimoElemento = rectTransform.offsetMin.y + rectTransform.rect.size.y; } GameCenter.InstanceRef.controladoraGUI.panelPreguntasOpciones.rectPanelPreguntas.offsetMin = new Vector2(GameCenter.InstanceRef.controladoraGUI.panelPreguntasOpciones.rectPanelPreguntas.offsetMin.x, posicionUltimoElemento); GameCenter.InstanceRef.controladoraGUI.panelPreguntasOpciones.y = GameCenter.InstanceRef.controladoraGUI.panelPreguntasOpciones.rectPanelPreguntas.localPosition.y; foreach (Button boton in cuerpo.GetComponentsInChildren<Button>()) { boton.transform.localPosition = new Vector2(cuerpo.transform.localPosition.x, boton.transform.localPosition.y + (GameCenter.InstanceRef.controladoraGUI.panelPreguntasOpciones.y * -1)); } }