private void SaveEdit() { // Create character change list ReadOnlyCollection <Character> AddedCharacters = EditPlayer.Characters.Where(c => OriginalCharacters.Any(x => x == c)).ToReadOnlyCollection(); ReadOnlyCollection <Character> RemovedCharacters = OriginalCharacters.Where(c => !EditPlayer.Characters.Contains(c)).ToReadOnlyCollection(); // Update player info db.UpdatePlayer(EditPlayer); // Add / Remove characters foreach (Character character in AddedCharacters) { db.AddCharacter(EditPlayer.Id, character); } }
public static void FindPlayer(PlayerDatabase playerData) { // Get player Print("Player's name? "); string input = Read().ToLowerInvariant(); Player player = playerData.GetPlayersByName(input).Single(); PrintLine($"Found Player: {player.ToString()}."); // Check if user wants to alter player data Print("Alter player data? "); input = Read().ToLowerInvariant(); if (input == "no" || input == "n") { return; } // Alter player data bool done = false; Print("What would you like to do? For help, enter 'help'. When done changing player info, enter 'done'."); input = Read(); while (!done) { switch (input.ToLowerInvariant()) { case "add character": Print($"Add which character to {player.Name}? "); string characterString = Read().ToLowerInvariant(); Character character = GetCharacter(); playerData.AddCharacter(player.Id, character); break; case "change tag": Print("Change tag to what? "); string tag = Read(); playerData.ChangeTag(player.Id, tag); break; case "get info": PrintLine(player.ToString()); break; // TODO: Add RemoveTag and RemoveCharacter functions to PlayerDatabase, and add that functionality here. /*case "remove tag": * PrintLine($"Current tags are: {player.PrintTags()}"); * Print($"Remove which tag? "); * input = Read(); * while(!player.Tags.Contains(input)) * { * Print("Tag does not exist. Enter a valid tag to remove. Remove which tag? "); * input = Read(); * } * playerData.RemoveTag(player.Id, input); * PrintLine("Tag Removed."); * break; */ case "done": done = true; break; case "help": Print(@"The commands are: * 'Change Tag' - This changes the currently selected player's prefered tag. * 'Add Character' - This adds a character to the currently selected player's information. * 'Get Info' - This gets all of the currently selected players information, such as their rating, tags, and the characters they play. * 'Done' - This exits the edit player sub-menu."); break; } Print("What would you like to do? For help, enter 'help'. When done changing player info, enter 'done'."); input = Read(); } }