コード例 #1
0
ファイル: Program.cs プロジェクト: dianafg/PlantTycoonHelper
        static void LoopForFlowerOrStemType()
        {
            while (true)
            {
                Console.WriteLine("\nEnter command:");
                var input = Console.ReadLine();
                Console.WriteLine("---------------");
                var parsedInput = ParseFlowerOrStemInput(input);
                switch (parsedInput)
                {
                case string command:
                    switch (command)
                    {
                    case "AF":          //All flower combinations
                        var allFlowerFormulasAF = flowerCalculator.ReportAllOrdered();
                        allFlowerFormulasAF
                        .ForEach(x => Console.WriteLine(
                                     $"{x.FlowerA.ToString()} + {x.FlowerB.ToString()} = {x.Result?.ToString()}{ComposeInProgressString(x.InProgress)}"));
                        break;

                    case "AP":          //All stem combinations
                        var allStemFormulasAF = stemCalculator.ReportAllOrdered();
                        allStemFormulasAF
                        .ForEach(x => Console.WriteLine(
                                     $"{x.StemA.ToString()} + {x.StemB.ToString()} = {x.Result?.ToString()}{ComposeInProgressString(x.InProgress)}"));
                        break;

                    case "LF":          //List flowers
                        var allFlowerFormulas                = flowerCalculator.ReportAllOrdered();
                        var allFlowerFormulasWithResult      = allFlowerFormulas.Where(x => x.Result != null || x.InProgress).ToList();
                        var allFlowerFormulasWithEmptyResult = allFlowerFormulas.Where(x => x.Result == null && x.InProgress == false).ToList();
                        Console.WriteLine("\nWith result: -------");
                        allFlowerFormulasWithResult
                        .ForEach(x => Console.WriteLine(
                                     $"{x.FlowerA.ToString()} + {x.FlowerB.ToString()} = {x.Result?.ToString()}{ComposeInProgressString(x.InProgress)}"));
                        Console.WriteLine("\nWith no result: -------");
                        allFlowerFormulasWithEmptyResult
                        .ForEach(x => Console.WriteLine($"{x.FlowerA.ToString()} + {x.FlowerB.ToString()}"));
                        break;

                    case "LP":          //List stems
                        var allStemFormulas                = stemCalculator.ReportAllOrdered();
                        var allStemFormulasWithResult      = allStemFormulas.Where(x => x.Result != null || x.InProgress).ToList();
                        var allStemFormulasWithEmptyResult = allStemFormulas.Where(x => x.Result == null && x.InProgress == false).ToList();
                        Console.WriteLine("\nWith result: -------");
                        allStemFormulasWithResult
                        .ForEach(x => Console.WriteLine(
                                     $"{x.StemA.ToString()} + {x.StemB.ToString()} = {x.Result?.ToString()}{ComposeInProgressString(x.InProgress)}"));
                        Console.WriteLine("\nWith no result: -------");
                        allStemFormulasWithEmptyResult
                        .ForEach(x => Console.WriteLine($"{x.StemA.ToString()} + {x.StemB.ToString()}"));
                        break;

                    case "RF":          //Reverse list flowers
                        var resultFlowerFormulas = flowerCalculator.ReportAllOrderedByResult();
                        resultFlowerFormulas
                        .ForEach(x => Console.WriteLine($"{x.Result.ToString()} <- {x.FlowerA.ToString()} + {x.FlowerB.ToString()}"));
                        Console.WriteLine("\nElements with no formula:");
                        var flowerTypesWithNoFormula = flowerCalculator.ReportFlowerTypesWithNoFormula();
                        flowerTypesWithNoFormula
                        .ForEach(x => Console.WriteLine($"{x.ToString()}"));
                        break;

                    case "RP":          //Reverse list stems
                        var resultStemFormulas = stemCalculator.ReportAllOrderedByResult();
                        resultStemFormulas
                        .ForEach(x => Console.WriteLine($"{x.Result.ToString()} <- {x.StemA.ToString()} + {x.StemB.ToString()}"));
                        Console.WriteLine("\nElements with no formula:");
                        var stemTypesWithNoFormula = stemCalculator.ReportStemTypesWithNoFormula();
                        stemTypesWithNoFormula
                        .ForEach(x => Console.WriteLine($"{x.ToString()}"));
                        break;

                    case "SS":          //Seed Storage
                        var seeds = seedCalculator.ReportSeeds();
                        seeds
                        .ForEach(x => Console.WriteLine($"{x.Flower.ToString()} {x.Stem.ToString()}"));
                        break;

                    case "RS":          //Reverse seed Storage
                        var seedsReverse = seedCalculator.ReportSeedsReverse();
                        seedsReverse
                        .ForEach(x => Console.WriteLine($"{x.Flower.ToString()} {x.Stem.ToString()}"));
                        break;

                    case "UPDATE":          //Update formulas
                        ReseedFormulas();
                        break;

                    default:
                        Console.WriteLine("Wrong input");
                        break;
                    }
                    break;

                case FlowerType flowerType:
                    var flowerFormulas = flowerCalculator.ReportForFlowerType(flowerType);
                    flowerFormulas.ForEach(x => Console.WriteLine($"{x.FlowerA.ToString()} + {x.FlowerB.ToString()} = {x.Result?.ToString()}"));
                    break;

                case StemType stemType:
                    var stemFormulas = stemCalculator.ReportForStemType(stemType);
                    stemFormulas.ForEach(x => Console.WriteLine($"{x.StemA.ToString()} + {x.StemB.ToString()} = {x.Result?.ToString()}"));
                    break;

                default:
                    Console.WriteLine("Wrong input");
                    break;
                }
            }
        }