private void Animal_DeadEvent(object sender, System.EventArgs e) { var animal = (Animal)sender; animal.DeadEvent -= Animal_DeadEvent; if (animal is Predator predator) { Logger.Info($"The {animal.Name} died"); Predators.Remove(predator); if (animal is Lion lion) { Predators.Add(AnimalFactory.GetAnimal <Lion>()); } if (animal is Fox fox) { Predators.Add(AnimalFactory.GetAnimal <Fox>()); } } if (animal is Herbivore herbivore) { Logger.Info($"The {animal.Name} died"); Herbivores.Remove(herbivore); if (animal is Goat goat) { Herbivores.Add(AnimalFactory.GetAnimal <Goat>()); } if (animal is Ram ram) { Herbivores.Add(AnimalFactory.GetAnimal <Ram>()); } } Logger.Info("The " + animal.Name + " born"); }
public void deleteHerbivore() { var toDelete = Herbivores.Where(h => h.HitPoints <= 0).ToList(); foreach (var td in toDelete) { Herbivores.Remove(td); } }
public void Apply(CarnivoreAteHerbivore @event) { var carnivore = Carnivores[@event.CarnivoreId]; var herbivore = Herbivores.Values.Single(h => h.X == @event.NewPosition.X && h.Y == @event.NewPosition.Y); Cells[carnivore.X, carnivore.Y] = CellType.Default; carnivore.Eat(herbivore); Herbivores.Remove(herbivore.Id); Cells[herbivore.X, herbivore.Y] = CellType.Carnivore; }