static void Main(string[] args) { UserInterface aMenu = new UserInterface(); DroidCollection collection = new DroidCollection(); DisplayMainMenu(); void DisplayMainMenu() { Console.Clear(); Console.Write(aMenu.MainMenu()); Console.Write("\n\n\t\t\t"); var menuChoice = Console.ReadLine(); HandleMainMenuInput(menuChoice); } void DisplayDroidMenu() { Console.Clear(); Console.ResetColor(); Console.Write(aMenu.DroidSelection()); Console.Write("\n\n\t\t\t\t\t"); string droidType = Console.ReadLine().ToUpper(); HandleDroidMenuInput(droidType); } void HandleMainMenuInput(string userSelection) { userSelection = userSelection.ToUpper(); switch (userSelection) { case "A": DisplayDroidMenu(); break; case "T": AddTestData(); Console.WriteLine(aMenu.TestDataAdded()); aMenu.Pause(); DisplayMainMenu(); break; case "P": if (IsEmpty()) { Console.WriteLine(aMenu.NothingToPrint()); aMenu.Pause(); } else { Console.Write(aMenu.PrintListMessage()); string[] allDroids = collection.PrintTheDroidsInventory(); aMenu.WaitForUser(); } DisplayMainMenu(); break; case "C": if (IsEmpty()) { Console.WriteLine(aMenu.NothingToSort()); } else { collection.CategorizeByModel(); Console.WriteLine(aMenu.DroidsSortedByCategory()); } aMenu.Pause(); DisplayMainMenu(); break; case "M": if (IsEmpty()) { Console.WriteLine(aMenu.NothingToSort()); } else { collection.MergeSortByTotalCost(); Console.WriteLine(aMenu.DroidsSortedByTotalCost()); } aMenu.Pause(); DisplayMainMenu(); break; case "Q": Console.WriteLine(aMenu.QuitProgramMessage()); aMenu.Pause(); Environment.Exit(0); break; default: Console.WriteLine(aMenu.InvalidOptionMessage()); aMenu.Pause(); DisplayMainMenu(); break; } } void AddTestData() { // protocol collection.Add("Polyskin", "Red", 6); collection.Add("Metaskin", "Black", 23); collection.Add("Ceraskin", "White", 13); //astromech collection.Add("Polyskin", "White", false, false, true, true, 12); collection.Add("Metaskin", "Black", false, false, false, true, 36); collection.Add("Metaskin", "Red", false, true, false, true, 24); //janitor collection.Add("Ceraskin", "Red", false, true, false, true, false); collection.Add("Metaskin", "White", false, false, true, false, false); collection.Add("Polyskin", "Black", true, false, true, true, true); //utility collection.Add("Metaskin", "Red", false, true, false); collection.Add("Polyskin", "White", true, true, false); collection.Add("Ceraskin", "Black", true, false, true); } // droid menu input handler void HandleDroidMenuInput(string droidType) { switch (droidType) { case "P": string[] protocol = aMenu.BuildProtocolDroid(); if (aMenu.ValidateDroidEntries(protocol)) { collection.Add(protocol[0], protocol[1], int.Parse(protocol[2])); Console.WriteLine(aMenu.DroidAdded()); } else { InvalidInformation(); } break; case "U": string[] utility = aMenu.BuildAUtilityDroid(); if (aMenu.ValidateDroidEntries(utility)) { collection.Add(utility[0], utility[1], bool.Parse(utility[2]), bool.Parse(utility[3]), bool.Parse(utility[4])); Console.WriteLine(aMenu.DroidAdded()); } else { InvalidInformation(); } break; case "J": string[] janitor = aMenu.BuildAJanitorDroid(); if (aMenu.ValidateDroidEntries(janitor)) { collection.Add(janitor[0], janitor[1], bool.Parse(janitor[2]), bool.Parse(janitor[3]), bool.Parse(janitor[4]), bool.Parse(janitor[5]), bool.Parse(janitor[6])); Console.WriteLine(aMenu.DroidAdded()); } else { InvalidInformation(); } break; case "A": string[] astromech = aMenu.BuildAnAstromechDroid(); if (aMenu.ValidateDroidEntries(astromech)) { collection.Add(astromech[0], astromech[1], bool.Parse(astromech[2]), bool.Parse(astromech[3]), bool.Parse(astromech[4]), bool.Parse(astromech[5]), int.Parse(astromech[6])); Console.WriteLine(aMenu.DroidAdded()); } else { InvalidInformation(); } break; case "M": DisplayMainMenu(); break; default: Console.WriteLine(aMenu.InvalidOptionMessage()); aMenu.Pause(); break; } aMenu.Pause(); DisplayDroidMenu(); } // The Badlands void InvalidInformation() { Console.Write(aMenu.InvalidInformation()); aMenu.Pause(); Console.ResetColor(); } bool IsEmpty() { return(collection.IsEmpty(collection.GetDroidArray())); } }
static void Main(string[] args) { // Set a constant for the size of the droidCollection const int droidCollectionSize = 100; // Make a new instance of the User Interface class UserInterface ui = new UserInterface(); // Create an instance of the DroidCollection class DroidCollection droidCollection = new DroidCollection(droidCollectionSize); // array to hold pre-loaded droids droidCollection.AddNewProtocolDroid("C3PO", "Protocol", "Gold", "Gold", 5); droidCollection.AddNewUtilityDroid("BD1", "Utility", "Amethyst", "Red", true, true, true); droidCollection.AddNewAstromechDroid("R2D2", "Astromech", "Iron", "Blue", true, true, true, true, 1); droidCollection.AddNewJanitorDroid("A1Z4", "Janitor", "Iron", "Black", true, true, true, true, true); droidCollection.AddNewProtocolDroid("P0L0", "Protocol", "Amethyst", "Purple", 3); // Display the Welcome Message to the user ui.DisplayWelcomeGreeting(); // Display the Menu and get the response. Store the response in the choice integer // This is the 'primer' run of displaying and getting. int choice = ui.DisplayMenuAndGetResponse(); // While the choice selected is not, continue to do work while (choice != 5) { switch (choice) { // Add A New Droid To The List case 1: // User Interface gets the droid type string type = ui.GetDroidTypeInformation(); // Tests if type is protocol, utility, janitor, or astromech if (type == "Protocol" || type == "protocol") { // Calls the UI for new Droid info and sets it to an array string string[] newDroidInformation = ui.GetNewProtocolDroidInformation(); // Adds the new droid to the droidCollection class droidCollection.AddNewProtocolDroid(newDroidInformation[0], newDroidInformation[1], newDroidInformation[2], newDroidInformation[3], int.Parse(newDroidInformation[4])); // Display add droid succession ui.DisplayAddDroidItemSuccess(); } if (type == "Utility" || type == "utility") { // Calls the UI for new Droid info and sets it to an array string string[] newDroidInformation = ui.GetNewUtilityDroidInformation(); // Adds the new droid to the droidCollection class droidCollection.AddNewUtilityDroid(newDroidInformation[0], newDroidInformation[1], newDroidInformation[2], newDroidInformation[3], bool.Parse(newDroidInformation[4]), bool.Parse(newDroidInformation[5]), bool.Parse(newDroidInformation[6])); // Display add droid succession ui.DisplayAddDroidItemSuccess(); // Boolean for option 2 } if (type == "Janitor" || type == "janitor") { // Calls the UI for new Droid info and sets it to an array string string[] newDroidInformation = ui.GetNewJanitorDroidInformation(); // Adds the new droid to the droidCollection class droidCollection.AddNewJanitorDroid(newDroidInformation[0], newDroidInformation[1], newDroidInformation[2], newDroidInformation[3], bool.Parse(newDroidInformation[4]), bool.Parse(newDroidInformation[5]), bool.Parse(newDroidInformation[6]), bool.Parse(newDroidInformation[7]), bool.Parse(newDroidInformation[8])); // Display add droid succession ui.DisplayAddDroidItemSuccess(); } if (type == "Astromech" || type == "astromech") { // Calls the UI for new Droid info and sets it to an array string string[] newDroidInformation = ui.GetNewAstromechDroidInformation(); // Adds the new droid to the droidCollection class droidCollection.AddNewAstromechDroid(newDroidInformation[0], newDroidInformation[1], newDroidInformation[2], newDroidInformation[3], bool.Parse(newDroidInformation[4]), bool.Parse(newDroidInformation[5]), bool.Parse(newDroidInformation[6]), bool.Parse(newDroidInformation[7]), int.Parse(newDroidInformation[8])); // Display add droid succession ui.DisplayAddDroidItemSuccess(); } break; // Print Droid List case 2: // Output New Droid heading ui.NewDroidsOutputHeading(); // Output Heading ui.DisplayDroidHeader(); // Output New Droids ui.Output(droidCollection.ToString()); break; // Categorize by model case 3: // Output Categorizing Header ui.DisplayCategorizingHeader(); // Output Heading ui.DisplayDroidHeader(); droidCollection.CategorizeByModel(); break; // Sort by Total Cost case 4: //MergeSort merge = new MergeSort(); // Output Sorting Header ui.DisplaySortingHeader(); Droid. // Merge call droidCollection.SendToMerge(); // Output Heading ui.DisplayDroidHeader(); // Output New Droids ui.Output(droidCollection.ToString()); break; } // Get the new choice of what to do from the user choice = ui.DisplayMenuAndGetResponse(); } }