Exemple #1
0
        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");
        }
Exemple #2
0
        public void deleteHerbivore()
        {
            var toDelete = Herbivores.Where(h => h.HitPoints <= 0).ToList();

            foreach (var td in toDelete)
            {
                Herbivores.Remove(td);
            }
        }
Exemple #3
0
            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;
            }