コード例 #1
0
    // Update is called once per frame
    void Update()
    {
        List <AnimalPopulation> extinctPopulations = new List <AnimalPopulation>();

        foreach (AnimalPopulation animalPopulation in _populations)
        {
            int numBad     = GetNumOfCondition(animalPopulation.Needs, NeedCondition.Bad);
            int numNeutral = GetNumOfCondition(animalPopulation.Needs, NeedCondition.Neutral);
            int numGood    = GetNumOfCondition(animalPopulation.Needs, NeedCondition.Good);
            animalPopulation.GrowthTimer -= Time.deltaTime;
            //Debug.Log(animalPopulation.GrowthTimer);

            if (animalPopulation.PopulationSize <= 0)
            {
                extinctPopulations.Add(animalPopulation);
                continue;
            }
            if (animalPopulation.GrowthTimer <= 0)
            {
                if (numBad > 0)
                {
                    Animal deadAnimal = animalPopulation.RemoveRandomAnimal();
                    Destroy(deadAnimal.gameObject);
                }
                else if (numGood > 0)
                {
                    Vector2 position = new Vector2(Random.Range(AnimalController.SpawnMin.x, AnimalController.SpawnMax.x), Random.Range(AnimalController.SpawnMin.y, AnimalController.SpawnMax.y));
                    animalPopulation.AddAnimalFromGameObject(AnimalController.CreateAnimal(animalPopulation.AnimalName, position));
                }
            }
        }

        foreach (AnimalPopulation animalPopulation in extinctPopulations)
        {
            _populations.Remove(animalPopulation);
        }
        //_foodDistributionScript.UpdateFoodNeeds();
        foreach (AnimalPopulation animalPopulation in _populations)
        {
            int numBad     = GetNumOfCondition(animalPopulation.Needs, NeedCondition.Bad);
            int numNeutral = GetNumOfCondition(animalPopulation.Needs, NeedCondition.Neutral);
            int numGood    = GetNumOfCondition(animalPopulation.Needs, NeedCondition.Good);
            if (animalPopulation.GrowthTimer <= 0 && (numBad > 0 || numGood > 0))
            {
                animalPopulation.GrowthTimer = GetNewGrowthTimeInterval(animalPopulation);
            }
        }
    }