static void DisplayFilterByAttitude(List <Monster> monsters) { List <Monster> filteredMonsters = new List <Monster>(); Monster.EmotionalState selectedAttitude = Monster.EmotionalState.happy; DisplayScreenHeader("Filter by Attitude"); // // add monsters with the selected attitude to a new list // //foreach (Monster monster in monsters) //{ // if (monster.Attitude == selectedAttitude) // { // filteredMonsters.Add(monster); // } //} // // LINQ examples // filteredMonsters = monsters.Where(m => m.Attitude == selectedAttitude).ToList(); filteredMonsters = filteredMonsters.OrderBy(m => m.Name).ToList(); // // display new list // Console.WriteLine($"{selectedAttitude} Monsters"); Console.WriteLine("\t***************************"); foreach (Monster monster in filteredMonsters) { MonsterInfo(monster); Console.WriteLine(); } DisplayContinuePrompt(); }
/// <summary> /// SCREEN: add a monster /// </summary> /// <param name="monsters">list of monsters</param> static void DisplayAddMonster(List <Monster> monsters) { Monster newMonster = new Monster(); bool ValidNumber = false; bool ValidEmotionalState = false; bool ValidTribe = false; bool active = false; int age = 0; Monster.EmotionalState attitude = default; Monster.Society tribe = default; string userInput; DisplayScreenHeader("Add Monster"); // // add monster object property values // // // add monster name // Console.Write("\tName: "); newMonster.Name = Console.ReadLine(); // // add monster age. Validate user input // while (!ValidNumber) { Console.Write("\tAge: "); if (int.TryParse(Console.ReadLine(), out age)) { ValidNumber = true; } else { Console.WriteLine("Not a number. Please enter a number."); } } newMonster.Age = age; // // add monster emotional state. Validate input // while (!ValidEmotionalState) { Console.Write("\tAttitude: "); if (Enum.TryParse(Console.ReadLine(), out attitude)) { ValidEmotionalState = true; } else { Console.WriteLine("Not an acceptable emotional state. Please try again."); } } newMonster.Attitude = attitude; while (!ValidTribe) { Console.Write("\tTribe: "); if (Enum.TryParse(Console.ReadLine(), out tribe)) { ValidTribe = true; } else { Console.WriteLine("Not a valid tribe. Please try again."); } } newMonster.Tribe = tribe; Console.Write("\tActive State (active or inactive): "); userInput = Console.ReadLine().ToLower().ToLower(); switch (userInput) { case "active": active = true; break; default: active = false; break; } newMonster.Active = active; // // echo new monster properties // Console.WriteLine(); Console.WriteLine("\tNew Monster's Properties"); Console.WriteLine("\t-------------"); MonsterInfo(newMonster); Console.WriteLine(); Console.WriteLine("\t-------------"); DisplayContinuePrompt(); monsters.Add(newMonster); }