Example #1
0
    public void SacarDeOcupadas()
    {
        Nurse   hormigaNurse   = this.transform.gameObject.GetComponent(typeof(Nurse)) as Nurse;
        Obrera  hormigaObrera  = this.transform.gameObject.GetComponent(typeof(Obrera)) as Obrera;
        Soldado hormigaSoldado = this.transform.gameObject.GetComponent(typeof(Soldado)) as Soldado;

        if (hormigaNurse != null)
        {
            if (reina.nursesOcupadas.Remove(hormigaNurse))
            {
                reina.nursesDesocupadas.Add(hormigaNurse);
            }
        }
        else if (hormigaObrera != null)
        {
            if (reina.obrerasOcupadas.Remove(hormigaObrera))
            {
                reina.obrerasDesocupadas.Add(hormigaObrera);
            }
        }
        else if (hormigaSoldado != null)
        {
            if (reina.soldadosOcupadas.Remove(hormigaSoldado))
            {
                reina.soldadosDesocupadas.Add(hormigaSoldado);
            }
        }
    }
Example #2
0
    public void HaySoldadosCerca()
    {
        foreach (HormigaGenerica h in hormigasCerca)
        {
            if (h != null)
            {
                Soldado hormigaSoldado = h.transform.gameObject.GetComponent(typeof(Soldado)) as Soldado;
                Obrera  hormigaObrera  = h.transform.gameObject.GetComponent(typeof(Obrera)) as Obrera;

                if (hormigaObrera != null)
                {
                    if (hormigaObrera.enemigoAlQueAtacar == null)
                    {
                        if (enemigosCerca.Count > 0)
                        {
                            EnemigoGenerico enem = this.enemigosCerca[Random.Range(0, this.enemigosCerca.Count)];
                            // Si no lo tiene ya asignado por orden
                            if (hormigaObrera.enemigoAlQueAtacarPorOrden != enem)
                            {
                                hormigaObrera.enemigoAlQueAtacar = enem;
                                if (!hormigaObrera.enemigoAlQueAtacar.hormigasAtacandole.Contains(hormigaObrera))
                                {
                                    hormigaObrera.enemigoAlQueAtacar.hormigasAtacandole.Add(hormigaObrera);
                                }
                            }
                        }
                    }
                }
                else if (hormigaSoldado != null)
                {
                    if (hormigaSoldado.enemigoAlQueAtacar == null)
                    {
                        if (enemigosCerca.Count > 0)
                        {
                            EnemigoGenerico enem = this.enemigosCerca[Random.Range(0, this.enemigosCerca.Count)];
                            // Si no lo tiene ya asignado por orden
                            if (hormigaSoldado.enemigoAlQueAtacarPorOrden != enem)
                            {
                                hormigaSoldado.enemigoAlQueAtacar = enem;
                                if (!hormigaSoldado.enemigoAlQueAtacar.hormigasAtacandole.Contains(hormigaSoldado))
                                {
                                    hormigaSoldado.enemigoAlQueAtacar.hormigasAtacandole.Add(hormigaSoldado);
                                }
                            }
                        }
                    }
                }
            }
        }

        bool haySoldadosEnTodas = false;
        int  cont = 0;

        foreach (EnemigoGenerico enem in enemigosCerca)
        {
            cont = 0;
            foreach (HormigaGenerica hormiga in enem.hormigasAtacandole)
            {
                if (hormiga != null)
                {
                    Soldado hormigaSoldado2 = hormiga.transform.gameObject.GetComponent(typeof(Soldado)) as Soldado;
                    if (hormigaSoldado2 != null)
                    {
                        haySoldadosEnTodas = true;
                        break;
                    }
                    else if (cont == enem.hormigasAtacandole.Count - 1)
                    {
                        haySoldadosEnTodas = false;
                        break;
                    }
                }
                cont++;
            }

            if (haySoldadosEnTodas == false)
            {
                break;
            }
        }

        if (haySoldadosEnTodas)
        {
            Task.current.Succeed();
            enemigoAlQueAtacar = null;
        }
        else
        {
            Task.current.Fail();
        }
    }
Example #3
0
    // Para detección de las hormigas (lista hormigasCerca)
    public void SistemaDeVision()
    {
        hormigasCerca = new List <HormigaGenerica>();
        obrerasCerca  = false;
        soldadosCerca = false;
        reinaCerca    = false;
        RaycastHit hit;

        Vector3 dir = Vector3.zero;

        // Rayos fijos
        for (int i = 0; i < numRayosFijos; i++)
        {
            switch (i)
            {
            case 0:    // delante
                dir = transform.TransformDirection(Vector3.forward);
                break;

            case 1:     // detras
                dir = transform.TransformDirection(Vector3.back);
                break;

            case 2:     // izq
                dir = transform.TransformDirection(Vector3.left);
                break;

            case 3:     //der
                dir = transform.TransformDirection(Vector3.right);
                break;
            }

            if (Physics.Raycast(transform.position, dir, out hit, RayDistance))
            {
                GameObject objetoColision = hit.collider.gameObject;

                if (objetoColision.transform.parent != null)
                {
                    if (objetoColision.transform.parent.gameObject != this.gameObject)
                    {
                        Obrera  hormigaObrera  = objetoColision.transform.parent.gameObject.GetComponent <Obrera>();
                        Soldado hormigaSoldado = objetoColision.transform.parent.gameObject.GetComponent <Soldado>();
                        Reina   hormigaReina   = objetoColision.transform.parent.gameObject.GetComponent <Reina>();
                        if (hormigaObrera != null)
                        {
                            obrerasCerca = true;
                        }
                        if (hormigaSoldado != null)
                        {
                            soldadosCerca = true;
                        }
                        if (hormigaReina != null)
                        {
                            reinaCerca = true;
                        }
                        if (!hormigasCerca.Contains(objetoColision.transform.parent.gameObject.GetComponent <HormigaGenerica>()))
                        {
                            hormigasCerca.Add(objetoColision.transform.parent.gameObject.GetComponent <HormigaGenerica>());
                        }
                    }
                    else
                    {
                        //Debug.Log("Chocandote contigo mismo");
                    }
                }
            }
        }

        // Rayos Móviles
        for (int j = 0; j < numRayosExtra; j++)
        {
            dir = new Vector3(Random.Range(-100, 101), 0, Random.Range(-100, 101));
            dir = dir.normalized;
            if (Physics.Raycast(transform.position, dir, out hit, RayDistance))
            {
                GameObject objetoColision = hit.collider.gameObject;

                if (objetoColision.transform.parent != null)
                {
                    if (objetoColision.transform.parent.gameObject != this.gameObject)
                    {
                        Obrera  hormigaObrera  = objetoColision.transform.parent.gameObject.GetComponent <Obrera>();
                        Soldado hormigaSoldado = objetoColision.transform.parent.gameObject.GetComponent <Soldado>();
                        Reina   hormigaReina   = objetoColision.transform.parent.gameObject.GetComponent <Reina>();
                        if (hormigaObrera != null)
                        {
                            obrerasCerca = true;
                        }
                        if (hormigaSoldado != null)
                        {
                            soldadosCerca = true;
                        }
                        if (hormigaReina != null)
                        {
                            reinaCerca = true;
                        }
                        if (!hormigasCerca.Contains(objetoColision.transform.parent.gameObject.GetComponent <HormigaGenerica>()))
                        {
                            hormigasCerca.Add(objetoColision.transform.parent.gameObject.GetComponent <HormigaGenerica>());
                        }
                        //Debug.Log(hit.collider.gameObject.transform.parent.gameObject.tag);
                    }

                    else
                    {
                        //Debug.Log("Chocandote contigo mismo");
                    }
                }
                //Debug.DrawRay(transform.position, dir * RayDistance, Color.magenta);
            }
        }
    }