Пример #1
0
    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");
    }
Пример #2
0
    //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");
    }
Пример #3
0
    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;
    }