private void DeleteAllAnimalKind(AnimalType animalType) { foreach (Animal animal in animalLists[animalType]) { Destroy(animal.gameObject); } animalLists[animalType].Clear(); OnAnimalCountChanged?.Invoke(this, new AnimalCountChangedEventArgs(animalType)); }
private void InstantiateAnimal(Vector2 position, Animal prefab, AnimalType animalType) { Animal spawnedAnimal = Instantiate(prefab); spawnedAnimal.transform.position = position; spawnedAnimal.transform.SetParent(animalsSpawnPivot, false); animalLists[animalType].Add(spawnedAnimal); spawnedAnimal.OnAnimalRemoved += (s, ea) => { animalLists[animalType].Remove(ea.Animal); NeededCount[animalType]--; OnAnimalCountChanged?.Invoke(this, new AnimalCountChangedEventArgs(animalType)); }; }
private void AdjustAnimalCount(AnimalType animal, int newAnimalCount) { if (newAnimalCount == animalLists[animal].Count) { return; } if (newAnimalCount < animalLists[animal].Count) { DeleteRandomAnimals(animalLists[animal], animalLists[animal].Count - newAnimalCount); } else { SpawnAnimals(animal, newAnimalCount - animalLists[animal].Count); } OnAnimalCountChanged?.Invoke(this, new AnimalCountChangedEventArgs(animal)); }