// 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); } } }