Пример #1
0
        /// <summary>
        /// Borrar una pregunta
        /// </summary>
        /// <param name="pregunta">objeto tipo PreguntaUsuarioBase</param>
        public void BorrarPregunta(PreguntaUsuarioBase pregunta)
        {
			listaPreguntasUsuario.Remove(pregunta);
        }
Пример #2
0
        /// <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);
            }
        }
Пример #3
0
 /// <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);
 }
Пример #4
0
        /// <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);
        }
Пример #5
0
        /// <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);
        }
Пример #6
0
        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;
        }
Пример #7
0
        /// <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);
        }
Пример #8
0
    /// <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;
    }
Пример #9
0
    /// <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());
    }
Пример #10
0
    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");
        }
    }
Пример #11
0
	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));
		}
	}