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(); } } } }
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); } }
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); } }