Example #1
0
        private void NewDay()
        {
            SaveData();
            int         maximum = Entities.Count;
            GeneticData newData;

            for (int i = 0; i < maximum; i++)
            {
                if (Entities[i] is Animal animal)
                {
                    if (animal is Rabbit rabbit)
                    {
                        rabbit.InHouse = false;
                    }
                    animal.Position = new Vector2f(10, Window.Size.Y / 2);
                    for (int r = 1; r < animal.FoodQuantity; r++)
                    {
                        newData = animal.GeneticData.Copy();
                        if (rd.NextDouble() <= newData.MutationRate)
                        {
                            newData.Mutate(rd);
                        }

                        Entities.Add(NewRabbit(newData));
                    }
                    animal.FoodQuantity = 0;
                }
            }
            WorldTime.NewDay();
            if (AppleQuant-- < MinApples)
            {
                AppleQuant++;
            }
            SetFood();

            foreach (Entity item in Entities)
            {
                if (item is Rabbit r)
                {
                    r.shape.Scale += new Vector2f(1, 1);
                }
            }
        }