private CharacterNameResultModel CreateCharacterName(AncestryDetailsModel ancestry, AncestryDetailsModel.AncestryOptionsModel selectedOption) { var segment = _randomItemSelector.GetRandomWeightedItem(selectedOption.SegmentGroups); var nameParts = GetNameDefinitions(segment, ancestry.NameParts); var name = CreateNameFromParts(nameParts, selectedOption.SeperatorChancePercentage, selectedOption.NamePartSeperators); return(new CharacterNameResultModel { AncestryCode = ancestry.Code, AncestryName = ancestry.Name, Definitions = nameParts.Where(x => x.Meanings?.Any() == true).ToArray(), Name = name, OptionCode = selectedOption.Code, OptionName = selectedOption.Name, }); }
public async Task <BuildingNameResultModel> GenerateBuildingName(string buildingTypeCode) { var buildingType = await GetBuildingType(buildingTypeCode); if (buildingType == null) { throw new ArgumentException($"{buildingTypeCode} is an invalid {nameof(buildingTypeCode)}"); } var nameFormat = _randomItemSelector.GetRandomWeightedItem(buildingType.NameFormats); var nameGroups = await GetBuildingNameGroups(); var buildingName = GenerateBuildingNameFromFormat(nameFormat.NameFormat, nameGroups); return(new BuildingNameResultModel { BuildingName = buildingName, BuildingTypeCode = buildingTypeCode, BuildingTypeName = buildingType.Name, }); }