Exemplo n.º 1
0
    public void UseItem()
    {
        foreach (Item item in items)
        {
            Debug.Log("in");
            if (item is CmdMover)
            {
                CmdMover mov = (CmdMover)item;

                if (mov.moveType.ToString() == "MoverAdelante")
                {
                    // Debug.Log("hola cmdmover " + item.MyTitle);
                    Player.MyInstance.moverAdelante();
                }
            }
        }
    }
Exemplo n.º 2
0
    public void Ejecutar()
    {
        try
        {
            //Dialog.MyInstance.enviarMensaje("Probando consola :)\nbla bla");
            //EditorScript.MyInstance.siCompleto == false || EditorScript.MyInstance.sinoCompleto == false

            bool siFull     = true;
            bool sinoFull   = true;
            int  posicionSi = 0;
            int  contSi     = 0; //Si la cuenta llega hasta 3 está completo.
            bool faltaTile  = false;

            //se analizan las lineas y bloques para buscar donde está incompleto
            for (int i = 0; i < EditorScript.MyInstance.lineas.Count; i++)
            {
                foreach (ActScript acto in EditorScript.MyInstance.lineas[i].actosLinea)
                {
                    if (acto.item is Si)
                    {
                        Si siaux = (Si)acto.item;
                        //Debug.Log(siaux.siType.ToString());
                        if (siaux.siType.ToString() == "Si")
                        {
                            siFull     = false;
                            posicionSi = i;
                            contSi++;
                        }
                        else if (siaux.siType.ToString() == "Ojo")
                        {
                            contSi++;
                            faltaTile = true;
                        }
                        else if (siaux.siType.ToString() == "TileGrass" || siaux.siType.ToString() == "TileSand" || siaux.siType.ToString() == "TileTree" || siaux.siType.ToString() == "TileWater")
                        {
                            faltaTile = false;
                            contSi++;
                        }
                        else if (siaux.siType.ToString() == "FinSi" && contSi == 3)
                        {
                            siFull = true;
                            contSi = 0;
                        }
                        else if (siaux.siType.ToString() == "Sino")
                        {
                            sinoFull   = false;
                            posicionSi = i;
                        }
                        else if (siaux.siType.ToString() == "FinSino")
                        {
                            sinoFull = true;
                        }
                        else if (siaux.siType.ToString() == "FinSi" && contSi < 3)
                        {
                            Debug.Log("Fin Si mal posicionado en la linea " + (i + 1));
                            Dialog.MyInstance.enviarMensaje("Fin Si mal posicionado en la linea " + (i + 1) + "\n");
                            EditorScript.MyInstance.activarErrorLinea(i);
                            error = true;
                            Thread.Sleep(100);
                        }
                        // if ((Si)acto.item.)
                    }

                    /* else if(acto.item is CmdMover){
                     *   CmdMover mov= (CmdMover)acto.item;
                     *   Debug.Log(mov.moveType.ToString());
                     * }*/
                }
            }

            if (contSi == 1)     // solo se puso el si
            {
                Dialog.MyInstance.enviarMensaje("Falta condición en la línea " + (posicionSi + 1) + "\n");
                Debug.Log("Falta condición en la línea " + (posicionSi + 1));
                EditorScript.MyInstance.activarErrorLinea(posicionSi);
                error = true;
                Thread.Sleep(100);
                //EditorScript.MyInstance.numLinea.transform.GetChild(posicion).GetComponent<>;
            }
            if (contSi == 2 && faltaTile)
            {
                Dialog.MyInstance.enviarMensaje("Falta código de terreno en la línea " + (posicionSi + 1) + "\n");
                Debug.Log("Falta código de terreno en la línea " + (posicionSi + 1));
                EditorScript.MyInstance.activarErrorLinea(posicionSi);
                error = true;
                Thread.Sleep(100);
            }
            if (siFull == false)
            {
                Dialog.MyInstance.enviarMensaje("Falta cerrar el Si de la línea " + (posicionSi + 1) + "\n");
                Debug.Log("Falta cerrar el Si de la línea " + (posicionSi + 1));
                EditorScript.MyInstance.activarErrorLinea(posicionSi);
                error = true;
                Thread.Sleep(100);
            }
            if (sinoFull == false)
            {
                Dialog.MyInstance.enviarMensaje("Falta cerrar el Sino de la línea " + (posicionSi + 1) + "\n");
                Debug.Log("Falta cerrar el Sino de la línea " + (posicionSi + 1));
                EditorScript.MyInstance.activarErrorLinea(posicionSi);
                error = true;
                Thread.Sleep(100);
            }



            if (!error)
            {
                bool condicionSi = true;
                numlinea.NumLineaClick = -1;
                for (int i = 0; i < EditorScript.MyInstance.lineas.Count; i++)
                {
                    if (EditorScript.MyInstance.detalles[i].estaClickeado())
                    {
                        EditorScript.MyInstance.detalles[i].desclickPanel();
                    }
                    if (i != EditorScript.MyInstance.lineas.Count - 1)
                    {
                        EditorScript.MyInstance.cambiarColorEjecucion(i);
                    }

                    foreach (ActScript acto in EditorScript.MyInstance.lineas[i].actosLinea)
                    {
                        item = acto.item;
                        //Debug.Log(item is Si);

                        if (item is Si)
                        {
                            //Debug.Log("si");
                            Si si = (Si)item;

                            if (si.siType.ToString() == "Si")
                            {
                                //contSi++;
                            }
                            else if (si.siType.ToString() == "Sino")
                            {
                            }
                            else if (si.siType.ToString() == "Ojo")
                            {
                            }
                            else if (si.siType.ToString() == "TileGrass")
                            {
                                if (player.terrenoDelante == "pasto")
                                {
                                    condicionSi = true;
                                }
                                else
                                {
                                    condicionSi = false;
                                    Debug.Log("El terreno delante no es pasto, es " + player.terrenoDelante);
                                }
                            }
                            else if (si.siType.ToString() == "TileSand")
                            {
                                if (player.terrenoDelante == "tierra")
                                {
                                    condicionSi = true;
                                }
                                else
                                {
                                    condicionSi = false;
                                }
                            }
                            else if (si.siType.ToString() == "TileTree")
                            {
                                if (player.terrenoDelante == "arbol")
                                {
                                    condicionSi = true;
                                }
                                else
                                {
                                    condicionSi = false;
                                }
                            }
                            else if (si.siType.ToString() == "TileWater")
                            {
                                if (player.terrenoDelante == "agua")
                                {
                                    condicionSi = true;
                                }
                                else
                                {
                                    condicionSi = false;
                                }
                            }
                            else if (si.siType.ToString() == "FinSi")
                            {
                                condicionSi = true; //para que siga avanzando las instrucciones despues del finsi
                            }
                            Thread.Sleep(250);
                        }
                        else if (item is CmdMover && condicionSi)
                        {
                            CmdMover mov = (CmdMover)item;
                            //Debug.Log("stack "+act.miStack);
                            for (int j = 0; j < acto.miStack; j++)
                            {
                                if (mov.moveType.ToString() == "MoverAdelante")
                                {
                                    //Debug.Log("hola cmdmover " + item.MyTitle);
                                    _t1Paused = false;
                                    player.moverAdelante();
                                    Thread.Sleep(1000);

                                    /*while (_t1Paused)
                                     * {
                                     * }*/
                                }
                                else if (mov.moveType.ToString() == "GirarDerecha")
                                {
                                    //_t1Paused = true;
                                    player.GirarDerecha();
                                    Thread.Sleep(500);
                                }
                                else if (mov.moveType.ToString() == "GirarIzquierda")
                                {
                                    //Debug.Log("in");
                                    //_t1Paused = true;
                                    player.GirarIzquierda();


                                    Thread.Sleep(500);
                                }
                                else if (mov.moveType.ToString() == "MoverAtras")
                                {
                                    _t1Paused = false;
                                    player.moverAtras();
                                    Thread.Sleep(1000);
                                }
                            }
                            //Debug.Log(mov.moveType.ToString());
                        }
                    } //end foreach
                    if (i != EditorScript.MyInstance.lineas.Count - 1)
                    {
                        EditorScript.MyInstance.cambiarColorEjecucion(i);
                        Thread.Sleep(50);
                    }
                } // end for

                Dialog.MyInstance.enviarMensaje("Código ejecutado correctamente \n");
                Debug.Log("thread ejecutado correctamente");
                threadTerminado = true;
            }
            else
            {
                threadTerminado = true;
                error           = false;
            }
        }
        catch (ThreadAbortException ex)
        {
            Dialog.MyInstance.enviarMensaje("Ejecución abortada \n");
            Debug.Log("Thread es abortado " + ex.ExceptionState);
        }
    }
Exemplo n.º 3
0
    public void AddActClickDerecho(IUseable actUsable)
    {
        EditorScript.MyInstance.desactivarErroresLineas();

        if (actUsable is CmdMover)
        {
            /*  for (int i = 0; i < EditorScript.MyInstance.lineas.Count; i++)
             * {
             *    foreach (ActScript acto in EditorScript.MyInstance.lineas[i].actosLinea)
             *    {
             *        if (acto.item is Si)
             *        {*/

            CmdMover movAnterior = null;

            if (EditorScript.MyInstance.lineas.Count > 1)
            {
                if (EditorScript.MyInstance.lineas[EditorScript.MyInstance.lineas.Count - 2].actosLinea[0].item is CmdMover)
                {
                    movAnterior = (CmdMover)EditorScript.MyInstance.lineas[EditorScript.MyInstance.lineas.Count - 2].actosLinea[0].item;
                }
                else
                {
                    movAnterior = null;
                }
            }

            mov = (CmdMover)actUsable; // cuando se genera el mov actual mov va recoger el ultimo item de la lista
                                       //el cual es el que se agrego anteriormente porque este serta el ultimo
                                       // Debug.Log("mov " + mov);
                                       //Debug.Log("movAnt " + movAnterior);
            if (movAnterior != null)
            {
                if (movAnterior.moveType == mov.moveType && EditorScript.MyInstance.lineas[EditorScript.MyInstance.lineas.Count - 2].actosLinea[0].item is CmdMover)
                {
                    //Debug.Log("mi index "+MyIndex);
                    int x = 0;

                    if (Int32.TryParse(EditorScript.MyInstance.inputs[EditorScript.MyInstance.inputs.Count - 1].text, out x))
                    {
                        x = x + 1;
                        EditorScript.MyInstance.inputs[EditorScript.MyInstance.inputs.Count - 1].text   = x.ToString();
                        EditorScript.MyInstance.acts[EditorScript.MyInstance.MyItems.Count - 1].miStack = x;
                        //Debug.Log("1");
                    }
                }
                else
                {
                    addActMov(actUsable);
                }
            }
            else
            {
                addActMov(actUsable);
            }
            //EditorScript.MyInstance.contMov++;//cuenta la cantidad de comandos mov que instancia el usuario
        }
        else if (actUsable is Si)
        {
            si = (Si)actUsable;

            if (si.siType.ToString() == "Si")
            {
                EditorScript.MyInstance.siCompleto = false;
                InventoryScript.MyInstance.SiBloquearBotones();
                EditorScript.MyInstance.AgregarAct();
            }
            else if (si.siType.ToString() == "Ojo")
            {
                InventoryScript.MyInstance.OjoBloquearBotones();
                EditorScript.MyInstance.AgregarAct();
            }
            else if (si.siType.ToString() == "TileGrass" || si.siType.ToString() == "TileSand" || si.siType.ToString() == "TileWater" || si.siType.ToString() == "TileTree")
            {
                InventoryScript.MyInstance.tilesDesbloqueoBotones();
                EditorScript.MyInstance.AgregarLinea();
            }
            else if (si.siType.ToString() == "FinSi")
            {
                EditorScript.MyInstance.siCompleto = true;
                InventoryScript.MyInstance.finSiDesbloq();
                EditorScript.MyInstance.AgregarLinea();
            }
            else if (si.siType.ToString() == "FinSino")
            {
                EditorScript.MyInstance.sinoCompleto = true;
                InventoryScript.MyInstance.finSinoDesbloq();
                EditorScript.MyInstance.AgregarLinea();
            }
            else if (si.siType.ToString() == "Sino")
            {
                EditorScript.MyInstance.sinoCompleto = false;
                InventoryScript.MyInstance.siBloqueoInicial();
                InventoryScript.MyInstance.SinoDesbloq();
                EditorScript.MyInstance.AgregarLinea();
            }



            item     = (Si)actUsable;
            MiUsable = actUsable;

            //EditorScript.MyInstance.AgregarAct();
            EditorScript.MyInstance.MyItems.Add(item);
            SetUseable(actUsable);
        }
    }