public static void Create() { List <Character> characters = Game.CurrentPlayer.Characters; if (characters.Count < Constants.MaxCharacters) { Menu.Announce("Create new character"); while (true) { Console.WriteLine($"Choose a name for your character{Constants.BackMessage}:"); string name = Command.ParseAlphaCommand(); if (name.Equals(Constants.BackCommand)) { return; } else if (name.Length < nameLength) { Console.WriteLine("Name must be at least 4 characters long and must contain only letters.\n"); continue; } else if (characters.Find(c => c.Name.Equals(name)) != null) { Console.WriteLine("Character with that name already exists.\n"); continue; } while (true) { Console.WriteLine("Choose a class:"); // Get all classes string[] classNames = CharacterClasses.Select(c => c.Name).ToArray(); Menu.ShowOptions(classNames.Select(c => c.SplitCapital()).ToArray()); // Show options to choose from int command = Command.ParseIntCommand(); if (command > 0 && command <= classNames.Length) { Type characterClass = Utility.GetType((classNames[command - 1]).ToString()); characters.Add(Activator.CreateInstance(characterClass, name) as Character); Console.WriteLine($"Character {name} created.\n"); Game.CurrentPlayer.Save(); return; } else { Console.WriteLine(Constants.InvalidCommand); continue; } } } } else { Console.WriteLine($"You have the maximum of {Constants.MaxCharacters} characters created.\n"); } }
/// <summary> /// Returns a list of all used models in the configuration /// </summary> public List <string> GetUsedModelsNames() { var needToLoadModels = BluePrints.Values.OfType <IVoxelEntity>().Select(e => e.ModelName).Where(m => !string.IsNullOrEmpty(m)).ToList(); needToLoadModels.AddRange(CharacterClasses.Select(c => c.ModelName)); needToLoadModels.AddRange(TreeBluePrints.Select(c => c.SeedModel)); needToLoadModels = needToLoadModels.Distinct().ToList(); return(needToLoadModels); }