public static void ProcessAnimals(MeatProcessor meatProcessor, Farm farm)
        {
            Console.Write("Are you ready to process?(y/n) ");
            string response = Console.ReadLine();

            if (response == "y")
            {
                double meatProduced = 0;
                foreach (IMeatProducing animal in meatProcessor.AnimalsToBeProcessed)
                {
                    meatProduced += animal.Butcher();
                }
                Program.DisplayBanner();
                Console.WriteLine($"Meat Produced: {meatProduced}kg.");
                Console.WriteLine("Press return to continue...or else ");
                Console.ReadLine();
            }
            else if (response == "n")
            {
                Program.DisplayBanner();
                ChooseMeatFacility.CollectInput(farm, meatProcessor);
            }
            else
            {
                Console.Write("You're a dingus. Try again. ");
                response = Console.ReadLine();
            }
        }
Exemplo n.º 2
0
 // Methods
 public double Process(MeatProcessor x)
 {
     return(_meatProduced);
 }
        public static void CollectInput(Farm farm, MeatProcessor meatProcessor)
        {
            int counter = 1;

            for (int i = 0; i < farm.ChickenHouses.Count; i++)
            {
                Console.WriteLine($"{counter}. Chicken House ({farm.ChickenHouses[i].Chickens.Count} Chickens)");
                counter++;
            }
            Console.WriteLine("===================================");
            for (int i = 0; i < farm.GrazingFields.Count; i++)
            {
                Console.WriteLine($"{counter}. Grazing Field ({farm.GrazingFields[i].Animals.Count} Animals)");
                counter++;
            }
            Console.Write("Which facility has the animals you would like to process from? ");
            int choice = Int32.Parse(Console.ReadLine());

            Console.Clear();
            Program.DisplayBanner();

            if (choice <= farm.ChickenHouses.Count)
            {
                Console.WriteLine($"How many chickens would you like to process? ");
                int numberOfChickens = Int32.Parse(Console.ReadLine());
                if (numberOfChickens == 1)
                {
                    meatProcessor.AddResource((IMeatProducing)farm.ChickenHouses[choice - 1].Chickens.First());
                    farm.ChickenHouses[choice - 1].Chickens.RemoveRange(0, numberOfChickens);
                    Program.DisplayBanner();
                    Console.WriteLine($"Successfully added {numberOfChickens} to the meat processor");
                    ProcessAnimals(meatProcessor, farm);
                }
                else
                {
                    List <IChicken> chickensToProcess = farm.ChickenHouses[choice - 1].Chickens.Take(numberOfChickens).ToList();
                    meatProcessor.AddResource(chickensToProcess.Select(c => (IMeatProducing)c).ToList());
                    farm.ChickenHouses[choice - 1].Chickens.RemoveRange(0, numberOfChickens);
                    Program.DisplayBanner();
                    Console.WriteLine($"Successfully added {numberOfChickens} to the meat processor");
                    ProcessAnimals(meatProcessor, farm);
                }
            }
            else
            {
                int animalIndex = 1;
                int index       = choice - farm.ChickenHouses.Count() - 1;
                // Group animals by their type to display their counts
                List <IGrouping <string, IGrazing> > groupedAnimals = farm.GrazingFields[index].Animals.GroupBy(anml => anml.Type).ToList();

                foreach (IGrouping <string, IGrazing> anml in groupedAnimals)
                {
                    Console.WriteLine($"{animalIndex}. {anml.Key}: {anml.Count()}");
                    animalIndex++;
                }
                Console.WriteLine("===================================");
                Console.Write("Which resource should be processed? ");
                int selection = Int32.Parse(Console.ReadLine());
                Console.WriteLine($"You selected: {groupedAnimals[selection - 1].Key}. I hope you're happy...\nHow many do you want to murder? ");
                int numberToMurder = Int32.Parse(Console.ReadLine());

                foreach (IGrazing animal in groupedAnimals[selection - 1].Take(numberToMurder))
                {
                    meatProcessor.AddResource((IMeatProducing)animal);
                    farm.GrazingFields[index].Animals.Remove(animal);
                }
                Program.DisplayBanner();
                Console.WriteLine($"Successfully added {numberToMurder} to the meat processor");
                ProcessAnimals(meatProcessor, farm);
            }
        }