Ejemplo n.º 1
0
    /*
     * //Metodo toma los 5 TextMesh y asigna las palabras
     *
     * Metodo que inicializa las posibles palabras
     * que se utilizaran para rellenar los huecos
     * en el texto del poema
     * Toma los respectivos TextMesh y asigna las palabras
     *
     * p = objeto poema que contiene el poema, las palabras validas
     * y palabras falsas
     * */
    private void InicializarPalabrasPosibles(Poema p)
    {
        //Lista con posibles palabras en la escena
        List <TextMesh> palabrasUi = new List <TextMesh>()
        {
            palabra1, palabra2, palabra3, palabra4, palabra5
        };
        //Lista con palabras verdadera y falsas segun el poema(nivel)
        List <Palabra> allPalabras = p.palabrasP.Concat(p.falsaspalabras).ToList();

        //Contador para iterar por la lista de palabras que forme
        int cont = 0;

        while (palabrasUi.Count != 0)      //Cilco par asignar random las palabras del poema a los mesh botones
        {
            /*
             * Posicion random en la lista de palabras de las escena
             * y obtengo Textmesh correspondiente
             * Asignamos al texto la palabra (segun cont )de mi lista
             * de palabras (
             * */
            int      pos = Random.Range(0, palabrasUi.Count);
            TextMesh t   = palabrasUi[pos];
            t.text = allPalabras[cont].palabra;

            //Si el objeto t no tiene collider para interaccionar con el trigger
            if (t.gameObject.GetComponent <BoxCollider>() == null)
            {
                //Asignar un collider al objeto para poder arrastrarlo en la Interfaz
                t.gameObject.AddComponent <BoxCollider>();
                //Se dispara cuando choca con otro collider
                t.GetComponent <Collider>().isTrigger = true;
            }

            //Lo pongo en la x original por si la palabra se ha movido
            ActivarMesh(t);

            //Elimino el textMesh de la lista para no repetirlo en la sig Iteracion
            palabrasUi.RemoveAt(pos);
            //Incremento cont para pasar el siguiente elemento en mi lista de palabras(allPalabras)
            cont++;
        }
    }
Ejemplo n.º 2
0
    private void Help()
    {
        Poema poemaActual = _controladorPoema._poemas[_controladorPoema.nivelPoema];

        Debug.Log("Entre a Help");


        /*
         *
         * Obtengo una lista TextMesh de los elementos vacio
         * "_" donde se deben de poner las palabras
         * en el poema con una consulta Linq para obtener las lineas y ordenarlas
         * segun el orden en pantalla
         * */
        List <TextMesh> lineas = FindObjectsOfType <TextMesh>().Where(a => a.name.Contains("Linea")).OrderBy(a => a.name).ToList();

        int cont = 0;        //Para saber en que linea estoy

        foreach (var l in lineas)
        {
            ManejadorLinea m = l.GetComponent <ManejadorLinea>();

            Debug.Log("var l in lineas");

            if (m.LineaDisponible() || m.GetPalabraInsegura())
            {
                Debug.Log("Entro IF () ()");

                //Recorro la lista de palabras del poema donde estoy
                foreach (var p in poemaActual.palabrasP)
                {
                    Debug.Log("var p in poemaActual.palabrasP)");

                    //Si la popsicion de la palabra es de la linea donde estoy
                    if (p.posicion == cont)
                    {
                        Debug.Log("Entro IF");

                        ControladorPalabra cp;
                        GameObject         o;

                        //Si hay una palabra puesta la cambio o la marco como correcta
                        if (m.GetActualPuesta() != "")
                        {
                            //Aguardar la que esta puesta antes de cambiarla
                            o = FindObjectsOfType <TextMesh>().First(a => a.text == m.GetActualPuesta()).gameObject;
                            Debug.Log(o.GetComponent <TextMesh>().text);

                            //Cambia la palabra y marco la correcta
                            m.FindandReplaceRedWord(p.palabra);
                            m.SetCorrectWord("#008000ff");

                            //Quitar la palara correcta de la lista y bajar la que habia
                            GameObject correcta = FindObjectsOfType <TextMesh>().First(a => a.text == p.palabra).gameObject;
                            cp = o.GetComponent <ControladorPalabra>();

                            //Colocamos las palabra a sus posiciones
                            cp.SubirPalabra(correcta);


                            cp.BajarPalabra(o.GetComponent <TextMesh>().text); //Bajando la que estaba puesta
                        }
                        else                                                   //Si no hay la pongo
                        {
                            Debug.Log("Entro ELSE");

                            //m.PutText(p.palabra,m.FindFirst_());
                            m.Remove_();
                            m.SetCorrectWord("#008000ff");
                            //Desactivando la palabra para que no la pueda seleccionar mas
                            o = FindObjectsOfType <TextMesh>().First(a => a.text == p.palabra).gameObject;

                            cp = o.GetComponent <ControladorPalabra>();
                            cp.SubirPalabra(o);
                        }

                        Debug.Log("Decremento Ayuda");

                        numAyuda--;
                        UpdateTextMesh(ayudaT, numAyuda.ToString());
                        DecDiamantes();

                        break;
                    }
                }
                break;
            }
            cont++;
        }
    }
Ejemplo n.º 3
0
    /*
     * Metodo para manejar las posiciones de los objetos
     * que estan siendo arrastrados en la escena
     * */
    public void CheckAndSet()
    {
        /*
         *
         * Obtengo una lista TextMesh de los elementos vacio
         * "_" donde se deben de poner las palabras
         * en el poema con una consulta Linq para obtener las lineas y ordenarlas
         * segun el orden en pantalla
         * */
        List <TextMesh> lineasEnInterfaz =
            FindObjectsOfType <TextMesh>().Where(a => a.name.Contains("Linea")).OrderBy(a => a.name).ToList();


        if (lineasEnInterfaz.Select(l => l.GetComponent <ManejadorLinea>()).Any(m => m.GetActualPuesta() == ""))
        {
            //Los sitios vacios "_" no estan completos
            _modalPanel.ShowPoema("Hay espacios sin completar." + "\n" + "Rellena todos los huecos", textoPoema, Aceptar, Cancelar, _modalPanel.CerrarPanel);
            return;
        }


        // Si todas estan completas Obtengo el poema actual
        Poema poemaActual = _controladorPoema._poemas[_controladorPoema.nivelPoema];

        //Obtengo las palabras correctas del poema las ordeno por su posicion para asegurar el orden
        List <Palabra> lineasOkPoema = poemaActual.palabrasP.OrderBy(a => a.posicion).ToList();
        //Bandera para controlar si se resolvieron todos los poemas
        bool bandera = true;
        //Guardar texto del poema para mostrarlo
        string poemaTexto = "";

        /*
         * Recorro todos los sitios vacios "_"
         *
         * */
        for (int i = 0; i < lineasEnInterfaz.Count; i++)
        {
            //Obtengo el script manejador para cada linea
            ManejadorLinea manejador = lineasEnInterfaz[i].GetComponent <ManejadorLinea>();

            //Voy guardando las lineas del poema
            poemaTexto += manejador.PintarPalabra(lineasEnInterfaz[i].text, "#008000ff") + "\n";

            //Comprobamos si hay una palabra puesta en el TextMesh
            if (manejador.ContienePalabraDeResp())
            {
                //Si la palabra que tiene puesta coincide con la que le toca en el poema
                if (manejador.GetActualPuesta() == poemaActual.GetPalabradeLinea(lineasOkPoema, i).palabra)
                {
                    //Palabra correcta, se asigna color acierto, verde en este caso
                    manejador.SetCorrectWord("#008000ff");
                }
                else
                {
                    //Actualizamos variables
                    bandera = false;
                    _intentos--;
                    _incorgullo = false;

                    //Actualizamos TextMesh de la escena
                    SetIntentos(_intentos);

                    //Si ya ha agotado sus intentos significa que fallo el poema hay que mostrar el otro opema y resetear los intentos

                    /*
                     * Si hay 0 intentos
                     * significa que ha fallado en el poema (nivel)
                     * Mostramos el siguiente poema (nivel)
                     * y reiniciamos variable intentos
                     * */
                    if (_intentos == 0)
                    {
                        if (_controladorPoema.nivelPoema <= 2)
                        {
                            _intentos = 3;
                            SetIntentos(_intentos);

                            //Aumentamos el nivel (poema)
                            //_controladorPoema.nivelPoema++;
                            IncNivel();

                            //Si utilizo la ayuda la reseteo para el siguiente poema
                            CheckAyuda();
                            //Le quito un diamante fallo el poema
                            DecDiamantes();

                            _modalPanel.ShowPoema("Tienes Tres errores. Poema Fallido." + "\n" + "Has perdido este nivel", textoPoema, Aceptar, Cancelar, _controladorPoema.SetUI);
                        }
                    }
                }
            }
        }


        /*
         * Si se resolvieron todos
         * los poemas, tratamos los casos
         *
         *
         * */
        if (bandera)
        {
            if (_incdiamantel)
            {
                if (_controladorPoema.nivelPoema == 2)
                {
                    _incdiamantel = false;
                }
                else
                {
                    diamantes++;
                    UpdateTextMesh(diamantesT, diamantes.ToString());
                }
            }

            if (_controladorPoema.nivelPoema < 2)
            {
                _intentos = 3;
                SetIntentos(_intentos);

                //Preparo el siguiente nivel (poema)
                //_controladorPoema.nivelPoema++;
                IncNivel();
                CheckAyuda();
                _modalPanel.ShowPoema(poemaTexto, textoPoema, Aceptar, Cancelar, _controladorPoema.SetUI);
            }
            else
            {
                if (_incorgullo)
                {
                    IncOrgullo();
                    _incorgullo = false;
                }

                _intentos = 0;
                SetIntentos(_intentos);
                _modalPanel.ShowPoema(poemaTexto, textoPoema, Aceptar, Cancelar, _modalPanel.CerrarPanel);
            }
        }
    }
Ejemplo n.º 4
0
    //Metodo toma los 5 TextMesh y asigna las palabras
    private void InicializarPalabrasPosibles(Poema p)
    {
        List<TextMesh> palabrasUi = new List<TextMesh>() {Palabra1, Palabra2, Palabra3, Palabra4, Palabra5};
        List<Palabra> todaspalabras = p.Palabras.Concat(p.Falsaspalabras).ToList();//Uno las palabras verdaderas y las falsas en una lista
        int cont = 0;//contador para iterar por la lista de palabras que forme
        while (palabrasUi.Count!=0)//Cilco par asignar random las palabras del poema a los mesh botones
        {
            int pos = Random.Range(0, palabrasUi.Count);//Posicion random en la lista de palabras
            TextMesh t = palabrasUi[pos];//Obtengo el Textmesh que esta en la lista
            t.text = todaspalabras[cont].palabra;//Asigno al texto la primera palabra de mi lista de palabras
            if (t.gameObject.GetComponent<BoxCollider>()==null)
            {
                t.gameObject.AddComponent<BoxCollider>();//Asignar un collider al objeto para poder arrastrarlo en la Interfaz
                t.GetComponent<Collider>().isTrigger = true;//Se dispara cuando choca con otro collider
            }
            ActivarMesh(t);//Lo pongo en la x original por si no estaba ahi

            palabrasUi.RemoveAt(pos);//Elimino el textMesh de la lista para no repetirlo en la sig Iteracion
            cont++;//Incremento cont para pasar el siguiente elemento en mi lista de palabras

        }
    }
Ejemplo n.º 5
0
    public void CheckAndSet()
    {
        //Obtengo las lineas que estan en pantalla en ese momento
        List<TextMesh> lineasenInterfaz =
            FindObjectsOfType<TextMesh>().Where(a => a.name.Contains("Linea")).OrderBy(a => a.name).ToList();

        if (lineasenInterfaz.Select(l => l.GetComponent<ManejadorLinea>()).Any(m => m.GetActualPuesta() == ""))
        {
            _modalPanel.ShowPoema("Hay espacios sin completar.", TextoPema, Aceptar, Cancelar, _modalPanel.CerrarPanel);
            return; //No estan completas retorno falso para q el jugador termine de completar el poema
        }
        // Si todas estan completas Obtengo el poema actual
        Poema poemaActual = _controladorPoema.Poemas[_controladorPoema._poemaactual];
        PoemaActual = poemaActual;
        //Obtengo las palabras correctas del poema las ordeno por su posicion para asegurar el orden
        List<Palabra> lineasPema = poemaActual.Palabras.OrderBy(a => a.posicion).ToList();
        bool bandera = true; //para controlar si se resolvieron todos los poemas
        string poema = ""; //Guardar texto del poema para mostrarlo
        for (int i = 0; i < lineasenInterfaz.Count; i++)
        {
            ManejadorLinea manejador = lineasenInterfaz[i].GetComponent<ManejadorLinea>();
            //Obtengo el script manejador para cada linea
            poema += manejador.PintarPalabra(lineasenInterfaz[i].text, "#008000ff") + "\n";
            if (manejador.ContienePalabraDeResp())
            {
                if (manejador.GetActualPuesta() == poemaActual.GetPalabradeLina(lineasPema, i).palabra)
                    //Si la palabra que tiene puesta coincide con la que le toca en el poema
                {
                    manejador.SetCorrectWord("#008000ff");
                    //Pongo la palabra en Coorecta asignandole un nuevo color, verde en este caso
                }
                else
                {
                    bandera = false;
                    IntentosValue--;
                    _incorgullo = false;
                    SetIntentos(IntentosValue);
                    if (IntentosValue == 0)
                        //Si ya ha agotado sus intentos significa que fallo el poema hay que mostrar el otro opema y resetear los intentos
                    {

                        if (_controladorPoema._poemaactual <= 2)
                        {
                            if (lastPoema == false)
                            {
                                IntentosValue = 3;
                                SetIntentos(3);
                                CheckAYuda(); //Si utilizo la ayuda la reseteo para el siguiente poema
                                DecDiamantes();//Le quito un diamante fallo el poema
                            }

                            if (_controladorPoema._poemaactual == 2)
                            {
                                lastPoema = true;
                                _modalPanel.ShowPoema("<color=red>Poema Fallido</color>\n" + GetCorrectPoema(),
                                    TextoPema, Aceptar, Cancelar,_modalPanel.CerrarPanel);
                            }
                            if (_controladorPoema._poemaactual <2)
                            {
                                _controladorPoema._poemaactual++;
                                _modalPanel.ShowPoema("<color=red>Poema Fallido</color>\n" + GetCorrectPoema(), TextoPema, Aceptar, Cancelar, _controladorPoema.SetUI);
                            }
                        }

                    }
                }
            }

        }
        if (bandera)
        {
            if (_incdiamantel)
            {
                if (_controladorPoema._poemaactual == 2)
                    _incdiamantel = false;
                else
                {
                    _diamantes++;
                    UpdateTextMesh(Diamantes, _diamantes.ToString());
                }

            }

            if (_controladorPoema._poemaactual < 2)
            {

                IntentosValue = 3;
                SetIntentos(IntentosValue);
                _controladorPoema._poemaactual++;
                CheckAYuda();
                _modalPanel.ShowPoema("<color=blue>Correcto</color>\n"+poema, TextoPema, Aceptar, Cancelar, _controladorPoema.SetUI);
            }
            else
            {
                if (_incorgullo)
                {
                    IncOrgullo();
                    _incorgullo = false;
                }
                IntentosValue = 0;
                SetIntentos(IntentosValue);
                _modalPanel.ShowPoema("<color=blue>Correcto</color>\n" + poema, TextoPema, Aceptar, Cancelar, _controladorPoema.SetUI);
            }

        }
    }