IEnumerator CrearExplorador() { //print("Comienza crear Exploradores"); List <Unidad> edificiosCreadores = GetCreadorDeUnidadesAdecuado(); // MIRO TODOS LOS EDIFICIOS QUE PUEDEN CONSTRUIR UNIDADES Y LOS ORDENO POR PRIORIDAD int edificioActual = 0; // SE UTILIZA PARA SABER CUAL ES EL EDIFICIO QUE VA A CONSTRUIR, PARA CONTROLAR QUE SI UN EDIFICIO NO PUEDE CREAR MAS, PASE AL SIGUIENTE while (partidaActual.JugadorActual.Exploradores < NUMERO_MINIMO_EXPLORADORES && edificioActual < edificiosCreadores.Count) { CrearUnidad accionCreadorUnidades = (CrearUnidad)edificiosCreadores[edificioActual].Acciones[CREAR_UNIDAD_INDEX]; List <Node> nodosAlAlcance = accionCreadorUnidades.VerNodosAlAlcance(); // COJO LOS NODOS AL ALCANCE ACTUALIZADO DEL EDIFICIO DE CREACION if (nodosAlAlcance.Count == 0) { // SI EN ESTE EDIFICIO NO SE PUEDE CREAR MAS GUERREROS, PASO AL SIGUIENTE edificioActual++; if (edificioActual >= edificiosCreadores.Count) // SI HE RECORRIDO TODOS LOS EDIFICIOS, SIGNIFICA QUE ME QUEDAN PUNTOS POR GASTAR PERO NO ME CABE EN NINGUN EDIFICIO MAS GUERREROS { print("NO SE PUEDEN CREAR MAS UNIDADES PORQUE NO CABEN MAS UNIDADES"); } } else if (edificioActual < edificiosCreadores.Count) // EN CASO DE QUE TODO VAYA BIEN, LO CREO { bool haFuncionado = accionCreadorUnidades.Ejecutar(nodosAlAlcance[0], TipoUnidad.Explorer); if (haFuncionado) { //print(partidaActual.JugadorActual.Exploradores); puntosAsignado -= StageData.COSTE_PA_CREAR_ALDEANO; yield return(new WaitForSeconds(0.5f)); // DELAY QUE SE TARDA ENTRE CREAR UNA UNIDAD Y OTRA } } } //yield return new WaitForSeconds(2); StartCoroutine("MoverExploradores"); }
//NECESITAMOS VARIAS FUNCIONES: /* * 1 - crear aldeanos, * 2 - mandar a los aldeanos a recoger los recursos. * 3 - funcion para obtener a los posibles creadores de aldeanos. * 4 - Funcion para obtener la influencia de los recursos, de ser encontrados. * 5 - funcion para obtener los diferentes recursos de la partida. * */ IEnumerator CrearAldeano() { //print("CREANDO ALDEANOS"); List <Unidad> edificiosCreadores = GetCreadorDeAldeanosAdecuado(); int edificioActual = 0; int totalCreados = 0; while (numeroCreaciones > 0 && edificioActual < edificiosCreadores.Count) { CrearUnidad accionCreadorUnidades = (CrearUnidad)edificiosCreadores [edificioActual].Acciones [0]; List <Node> nodosAlAlcance = accionCreadorUnidades.VerNodosAlAlcance(); if (nodosAlAlcance.Count == 0) { edificioActual++; if (edificioActual >= edificiosCreadores.Count) { //print ("No se pueden crear más en este edificio"); } } else if (edificioActual < edificiosCreadores.Count) { bool haFuncionado = accionCreadorUnidades.Ejecutar(nodosAlAlcance[0], TipoUnidad.Worker); if (haFuncionado) { totalCreados++; numeroCreaciones--; //print (numeroCreaciones); yield return(new WaitForSeconds(1)); } } } StageData.currentInstance.GetPartidaActual().JugadorActual.Aldeanos += totalCreados; StartCoroutine("PrepararOrdenesAldeanos"); }
IEnumerator CrearGuerreros() { List <Unidad> edificiosCreadores = GetCreadorDeUnidadesAdecuado(); // MIRO TODOS LOS EDIFICIOS QUE PUEDEN CONSTRUIR UNIDADES Y LOS ORDENO POR PRIORIDAD int edificioActual = 0; // SE UTILIZA PARA SABER CUAL ES EL EDIFICIO QUE VA A CONSTRUIR, PARA CONTROLAR QUE SI UN EDIFICIO NO PUEDE CREAR MAS, PASE AL SIGUIENTE while (numeroCreaciones > 0 && edificioActual < edificiosCreadores.Count) { CrearUnidad accionCreadorUnidades = (CrearUnidad)edificiosCreadores [edificioActual].Acciones [CREAR_UNIDAD_INDEX]; List <Node> nodosAlAlcance = accionCreadorUnidades.VerNodosAlAlcance(); // COJO LOS NODOS AL ALCANCE ACTUALIZADO DEL EDIFICIO DE CREACION if (nodosAlAlcance.Count == 0) // SI EN ESTE EDIFICIO NO SE PUEDE CREAR MAS GUERREROS, PASO AL SIGUIENTE { edificioActual++; if (edificioActual >= edificiosCreadores.Count) // SI HE RECORRIDO TODOS LOS EDIFICIOS, SIGNIFICA QUE ME QUEDAN PUNTOS POR GASTAR PERO NO ME CABE EN NINGUN EDIFICIO MAS GUERREROS { print("NO SE PUEDEN CREAR MAS UNIDADES PORQUE NO CABEN MAS UNIDADES"); } } else if (edificioActual < edificiosCreadores.Count) // EN CASO DE QUE TODO VAYA BIEN, LO CREO { bool haFuncionado = accionCreadorUnidades.Ejecutar(nodosAlAlcance [0], TipoUnidad.Warrior); if (haFuncionado) { numeroCreaciones--; //print(numeroCreaciones); yield return(new WaitForSeconds(0.5f)); // DELAY QUE SE TARDA ENTRE CREAR UNA UNIDAD Y OTRA } } } fin = true; }