// Use to process your families.
    protected override void onProcess(int familiesUpdateCount)
    {
        //pour chaque élément absorbeur détecté
        foreach (GameObject go in _controllableGO)
        {
            Triggered2D t2d = go.GetComponent <Triggered2D> ();
            // Comme absorber diminue le HP on le récupére dans le fils de l'élément
            HP hp1 = go.gameObject.GetComponentInChildren <HP> ();
            //On récupére tous les élements en collision
            foreach (GameObject target in t2d.Targets)
            {
                //on vérifie que l'élément a côté n'a pas été déja absorbé
                IsAbsorbe isAbsorbe = target.GetComponent <IsAbsorbe> ();
                Absorbeur absorbeur = go.GetComponent <Absorbeur> ();
                // s'il est en train d'être absorbé
                if (isAbsorbe != null)
                {
                    continue;
                }
                // si l'élement n'est pas encore été absorbé, si c'est une toxine

                if (target.gameObject.CompareTag("toxine"))
                {
                    //on lui rajoute le compononent "isAbsorbe"
                    target.AddComponent <IsAbsorbe>();
                    Debug.Log("Absorbe : toxine " + go);
                    //on diminue le hp
                    hp1.hp -= absorbeur.hpLost;
                }
                // si l'élement n'est pas encore été absorbé, si c'est une dechet
                else if (target.gameObject.CompareTag("dechet"))
                {
                    Debug.Log("Absorbe : dechet " + go);
                    target.AddComponent <IsAbsorbe>();
                    hp1.hp -= absorbeur.hpLost;
                }
                // si l'élement n'est pas encore été absorbé, si c'est une bacterie
                else if (target.gameObject.CompareTag("bacterie"))
                {
                    Debug.Log("Absorbe");
                    target.AddComponent <IsAbsorbe>();
                    //target.gameObject.transform.GetChild(0).gameObject.AddComponent<IsAbsorbe>();
                    hp1.hp -= absorbeur.hpLost;
                }
                // si l'élement n'est pas encore été absorbé, si c'est un virus et qu'il n'est pas agglutiné
                else if (target.gameObject.CompareTag("virus") && target.GetComponent <Agglutinué>() != null)
                {
                    Debug.Log("Absorbe");
                    target.AddComponent <IsAbsorbe>();
                    target.gameObject.transform.GetChild(0).gameObject.AddComponent <IsAbsorbe>();
                    hp1.hp -= absorbeur.hpLost;
                }
            }
        }
    }
Esempio n. 2
0
    // Use to process your families.
    protected override void onProcess(int familiesUpdateCount)
    {
        foreach (GameObject go in _triggeredGO)
        {
            bool tokill = false;
            //On vérifie tous les cas ou on peut mourrir, soit un infection par un virus etc...
            Infecteur  virusC     = go.GetComponent <Infecteur> ();
            HP         hp1        = go.gameObject.GetComponentInChildren <HP> ();
            IsApoptose isApoptose = go.GetComponent <IsApoptose>();
            IsAbsorbe  isAbsorbe  = go.GetComponent <IsAbsorbe> ();
            IsInfecte  infecte    = go.GetComponent <IsInfecte> ();
            Leucocyte  leucocyte  = go.GetComponent <Leucocyte> ();
            Secreter   secreter   = go.GetComponent <Secreter> ();
            if (virusC != null && virusC.hasInfect)               // mort des virus une fois qu'ils ont infecté qlqu'un
            {
                Debug.Log("MORT : virus a infecté " + go);
                tokill = true;
                //GameObjectManager.destroyGameObject (go);
            }
            if (hp1 != null && hp1.hp <= 0)               // mort de toute entitées quand elle a plus d'HP
            {
                Debug.Log("MORT : plus d'hp " + go);
                tokill = true;
                //GameObjectManager.destroyGameObject (go);
            }
            if (isApoptose != null)               // MORT APOPTOSE
            {
                Debug.Log("MORT : apoptose " + go);
                tokill = true;
                //GameObjectManager.destroyGameObject (go);
            }
            if (isAbsorbe != null)               // MORT absorbé
            {
                Debug.Log("MORT : absorbé " + go);
                tokill = true;
                //GameObjectManager.destroyGameObject (go);
            }
            if (leucocyte != null && tokill)
            {
                bound = go.GetComponent <Renderer>().bounds;
                for (int i = 0; i < 3; i++)
                {
                    float x = Random.Range(bound.min.x - 0.5f, bound.max.x + 0.5f);
                    float y = Random.Range(bound.min.y - 0.5f, bound.max.y + 0.5f);
                    float z = 0.0f;

                    Vector3 toxPosition = new Vector3(x, y, z);

                    vir = GameObjectManager.instantiatePrefab("Dechet");
                    vir.transform.position = toxPosition;
                }
            }
            if (secreter != null && tokill)
            {
                bound = go.GetComponent <Renderer>().bounds;
                float x = Random.Range(bound.max.x, bound.max.x + 0.5f);
                float y = Random.Range(bound.max.y, bound.max.y + 0.5f);
                float z = 0.0f;

                Vector3 toxPosition = new Vector3(x, y, z);

                vir = GameObjectManager.instantiatePrefab("Dechet");
                //vir.transform.position = toxPosition;
            }

            if (infecte != null && isAbsorbe == null && isApoptose == null && tokill)
            {
                Debug.Log("dlibere VIrus : absorbé " + go);
                bound = go.GetComponent <Renderer>().bounds;
                for (int i = 0; i < 5; i++)
                {
                    float x = Random.Range(bound.min.x, bound.max.x);
                    float y = Random.Range(bound.min.y, bound.max.y);
                    float z = 0.0f;

                    Vector3 toxPosition = new Vector3(x, y, z);

                    vir = GameObjectManager.instantiatePrefab("Virus");
                    vir.transform.position = toxPosition;
                }
            }
            if (tokill)
            {
                //if(go.gameObject.transform.parent.gameObject)
                //	GameObjectManager.destroyGameObject (go.gameObject.transform.parent.gameObject);
                //else
                GameObjectManager.destroyGameObject(go);
            }
        }
    }