コード例 #1
0
    /*
     * Metodo que se llama una vez cada frame para
     * cada collider que esta en contacto con el trigger
     *
     *
     *
     * */
    private void OnTriggerStay(Collider other)
    {
        //Inicializamos
        _soltando = false;

        //Si el collider con el que choca es una linea
        if (other.name.Contains("Linea"))
        {
            /*
             * Obtengo el TextMesh del objeto que colisiono
             * a traves de una pequeña consulta Linq
             * */
            TextMesh linea = FindObjectsOfType <TextMesh>().First(a => a.name == other.name);

            //Obtengo el objeto que creara la linea
            ManejadorLinea manejadorLinea = linea.GetComponent <ManejadorLinea>();

            /*
             * Si suelta el clic
             * */
            if (Input.GetMouseButtonUp(0))            //Si suelta el clic
            {
                //Caso 1:Si la linea(Ui en escena) contiene _ (significa que no hay palabra puesta = (vacio))
                if (manejadorLinea.LineaDisponible())
                {
                    //Encontrar la posicion de la 1ra _ (vacio)
                    int posicion = manejadorLinea.FindFirst_();

                    //Agrego la palabra a la linea donde esten las __
                    manejadorLinea.PutText(gameObject.GetComponent <TextMesh>(), posicion);
                    //Agrego la palabra a la linea donde esten las __
                    manejadorLinea.Remove_();
                }

                //Caso 2 Si la linea  tiene palabras que ya han sido puestas
                else if (manejadorLinea.ContienePalabraDeResp())
                {
                    //Si la linea tiene color rojo es q tiene palabras puestas

                    /*
                     * Obtengo la palabra antigua(donde quiero poner la nueva)
                     * y coloco la palabra nueva
                     * La palabra antigua la devuelvo junto a las otras palabras
                     * por colocar
                     *
                     * */

                    string oldword = manejadorLinea.FindandReplaceRedWord(gameObject.GetComponent <TextMesh>().text);

                    //Devolvemos la palabra a su sitio
                    BajarPalabra(oldword);
                }

                _soltando = true;
            }
        }
    }
コード例 #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++;
        }
    }