コード例 #1
0
    public void Feeding_Cycle(ref Animal_Section_SeaUrchin food1, ref Animal_Section_Copepod food2, ref Animal_Section_Shrimp food3)
    {
        Animal_parents [] foods = new Animal_parents[3];
        int pops = pop;
        int lastindex = 0;
        //		int food_counter = pops;
        foods [0] = food1;
        foods [1] = food2;

        if (food1.pop <= 0 && food2.pop <= 0 && pop > 0) {
            Debug.Log ("zero");

            for (int i =0; i<pop; i++) {

                lastindex = alive.Count - 1;
                if (lastindex > 0) {
                    GameObject.Destroy (alive [lastindex]);
                    alive.RemoveAt (lastindex);
                } else if (lastindex == 0) {

                    //lastindex = alive.Count - 1;
                    GameObject.Destroy (alive [lastindex]);
                    alive [lastindex] = null;
                }
            }

            zeroDeath ();
            zeroCounter ();
            pop = 0;
        } else {
            Debug.Log ("for each case");
            Debug.Log ("foods contents" + foods);
            foreach (Animal_parents food in foods) {
                Debug.Log ("food parent" + food);
                if(pops>0 && food.pop>0){
                    if (food.pop >= pops) {
                        Debug.Log("food greater than pop");
                        //normal eating (no loss from eating creature)
                        for (int i =0; i<pops; i++) {

                            lastindex = food.alive.Count - 1;
                            if (lastindex > 0) {
                                GameObject.Destroy (food.alive [lastindex]);
                                food.alive.RemoveAt (lastindex);
                            } else if (lastindex == 0) {

                                GameObject.Destroy (food.alive [lastindex]);
                                food.alive [lastindex] = null;
                            }
                        }

                        pops = pops - food.pop;

                        food.pop = food.pop - pop;
                        food.counter [0] = food.counter [0] - pop;

                        food.reduce_Death (pop, food.death_limit);
                        food.reduce_Count (pop, food.repro_ratio);

                    }else if (food.pop < pops && food.pop > 0) {
                        Debug.Log ("feed with few sources");

                        //	copepod_class.pop = food.pop - pops;

                        /*		for (int i =0; i<=pops-food.pop; i++) {
                            lastindex = alive.Count - 1;

                            if (alive.Count > 0) {

                                if (lastindex > 0) {
                                    GameObject.Destroy (alive [lastindex]);
                                    alive.RemoveAt (lastindex);
                                } else if (lastindex == 0) {

                                    GameObject.Destroy (alive [lastindex]);
                                    alive [lastindex] = null;
                                }
                            }
                        }*/

                        while (food.alive.Count >0) {
                            if (food.alive.Count > 1) {
                                GameObject.Destroy (food.alive [0]);
                                food.alive.RemoveAt (0);
                            } else if (food.alive.Count == 1) {
                                GameObject.Destroy (alive [lastindex]);
                                alive [lastindex] = null;
                            }

                        }

                        /*			pop = food.pop;
                        counter [0] = pop;
                        counter [1] = 0;
                        counter [2] = 0;

                        Debug.Log ("pops " + pops);
                        Debug.Log ("food " + food);
                        reduce_Death (pops - food.pop, death_limit);
                        reduce_Count (pops - food.pop, repro_ratio);*/
                        pops = pops - food.pop;

                        food.pop = 0;
                        food.zeroCounter ();

                        food.zeroDeath ();
                        //food_counter = food.pop - pops;

                    }

                    Debug.Log ("pop after eating " + pop);

                }

            }

            if(pops>0){

                for (int i =0; i<=pops; i++) {
                    lastindex = alive.Count - 1;

                    if (alive.Count > 0) {

                        if (lastindex > 0) {
                            GameObject.Destroy (alive [lastindex]);
                            alive.RemoveAt (lastindex);
                        } else if (lastindex == 0) {

                            GameObject.Destroy (alive [lastindex]);
                            alive [lastindex] = null;
                        }
                    }
                }

                pop = pop - pops;

                //counter [1] = 0;
                //counter [2] = 0;
                zeroCounter();
                counter [0] = pop;

                Debug.Log ("pops " + pops);
                //	Debug.Log ("food " + food);
                reduce_Death (pops, death_limit);
                reduce_Count (pops, repro_ratio);

            }
        }
    }
コード例 #2
0
    public void Feeding_Cycle(ref Animal_Section_SeaUrchin food)
    {
        Debug.Log ("eatne food pop" + food.pop);
        Debug.Log ("feeder food pop" + pop);
        int pops = pop;
        int lastindex = 0;
        //int food_counter = 0 ;

        if (food.pop >= pops ) {
        //	food_counter = food.pop-  pops ;
            //normal eating (no loss from creature)
            for (int i =0; i<pops; i++) {

                lastindex = food.alive.Count - 1;
                if(lastindex>0){
                    GameObject.Destroy (food.alive [lastindex]);
                    food.alive.RemoveAt (lastindex);
                }else if (lastindex ==0){

                    GameObject.Destroy (food.alive [lastindex]);
                    food.alive[lastindex] = null;
                }
            }

            food.reduce_Death (food.pop - pop,food.death_limit);
            food.pop = food.pop - pops;
            food.counter[0] = food.counter[0] - pops;

        } else if ( food.pop < pops && food.pop >0) {
            Debug.Log("feed with few sources");

            //	copepod_class.pop = food.pop - pops;

            for (int i =0; i<=pops-food.pop; i++) {

                if(alive.Count >0){
                    lastindex = alive.Count - 1;
                    if(lastindex>=0){
                        GameObject.Destroy (alive [lastindex]);
                        alive.RemoveAt (lastindex);
                    }else if (lastindex ==0){

                        GameObject.Destroy (alive [lastindex]);
                        alive[lastindex] = null;
                    }
                }

            }
            Debug.Log("before while");
            while (food.alive.Count >=1){
                if(food.alive.Count>2){
                    GameObject.Destroy (food.alive [0]);
                    food.alive.RemoveAt (0);
                }else if (food.alive.Count==1){
                    Debug.Log("last case");
                    Debug.Log("at last pointer " + food.alive[0]);
                    GameObject.Destroy (food.alive [0]);
                    food.alive[0] = null;
                }

            }
            Debug.Log("after while");
            pop = food.pop;
            counter[0] = pop;
            counter[1] = 0;

            Debug.Log("pops " + pops);
            Debug.Log("food "+food);
            reduce_Death(pops-food.pop,death_limit );
            reduce_Count(pops-food.pop,repro_ratio );

            food.pop = 0;
            food.zeroCounter();

            food.zeroDeath();
            //food_counter = food.pop - pops;

            /*	for(int i =0; i <=2; i++){

                counter[i] = counter[i] - food_counter;

                if(counter[i]<0)
                    counter[i] = counter[i]*-1;

                food_counter = food_counter - 	counter[i];

            }*/

        }else if(food.pop <=0 && pops>0){
            Debug.Log("zero");

            for (int i =0; i<pops; i++) {

                lastindex = alive.Count - 1;
                if(lastindex>0){
                    GameObject.Destroy (alive [lastindex]);
                    alive.RemoveAt (lastindex);
                }else if (lastindex ==0){

                    //lastindex = alive.Count - 1;
                    GameObject.Destroy (alive [lastindex]);
                    alive[lastindex] = null;
                }
            }

            zeroDeath();
            zeroCounter();
            pop = 0;
        }

        Debug.Log ("pop after eating " + pop);
    }