/// <summary> /// Given an Id, position and isFemale flag, will return a randomly chosen name that meets those criteria. /// </summary> /// <param name="position"></param> /// <param name="isFemale">Defaults to false, not needed when position == LastName</param> /// <returns></returns> public string GetName(NamePosition position, bool isFemale = false) { var randomInt = rnd.Next(1, 101); foreach (var option in Distributions) { if (randomInt <= option.Item1) { var theme = CommanderNameThemes.Instance.NameThemes.FirstOrDefault(x => x.Id == option.Item2); if (theme == null) throw new Exception(string.Format("Commander Name Theme not found. Id: {0}", option.Item2)); var query = theme.NameEntries.Where(x => x.NamePosition == position && (position != NamePosition.FirstName || x.IsFemale == isFemale)).ToList(); var entryCount = query.Count(); if (entryCount < 1) throw new ArgumentOutOfRangeException(theme.Name, "No valid entries found in Commander Name Theme"); var randomIndex = rnd.Next(0, entryCount); return query[randomIndex].Name; } } throw new Exception("No entry found in Commander Name Theme selections."); }
/// <summary> /// Given an Id, position and isFemale flag, will return a randomly chosen name that meets those criteria. /// </summary> /// <param name="position"></param> /// <param name="isFemale">Defaults to false, not needed when position == LastName</param> /// <returns></returns> public string GetName(NamePosition position, bool isFemale = false) { var randomInt = rnd.Next(1, 101); foreach (var option in Distributions) { if (randomInt <= option.Item1) { var theme = CommanderNameThemes.Instance.NameThemes.FirstOrDefault(x => x.Id == option.Item2); if (theme == null) { throw new Exception(string.Format("Commander Name Theme not found. Id: {0}", option.Item2)); } var query = theme.NameEntries.Where(x => x.NamePosition == position && (position != NamePosition.FirstName || x.IsFemale == isFemale)).ToList(); var entryCount = query.Count(); if (entryCount < 1) { throw new ArgumentOutOfRangeException(theme.Name, "No valid entries found in Commander Name Theme"); } var randomIndex = rnd.Next(0, entryCount); return(query[randomIndex].Name); } } throw new Exception("No entry found in Commander Name Theme selections."); }
/// <summary> /// 初始化名称标签 /// </summary> private void InitTag() { var nameInfo = NamePosition.Split('|'); var tb = Template.FindName("tbTag", this) as TextBlock; if (tb == null) { return; } tb.Visibility = NameVisible ? Visibility.Visible : Visibility.Hidden; if (nameInfo.Length < 3) { return; } try { tb.HorizontalAlignment = String.IsNullOrWhiteSpace(nameInfo[0]) ? tb.HorizontalAlignment : (HorizontalAlignment)Enum.Parse(typeof(HorizontalAlignment), nameInfo[0]); tb.VerticalAlignment = String.IsNullOrWhiteSpace(nameInfo[1]) ? tb.VerticalAlignment : (VerticalAlignment)Enum.Parse(typeof(VerticalAlignment), nameInfo[1]); var tc = new ThicknessConverter(); var convertFromString = tc.ConvertFromString(nameInfo[2]); if (convertFromString != null) { tb.Margin = String.IsNullOrWhiteSpace(nameInfo[2]) ? tb.Margin : (Thickness)convertFromString; } } catch (Exception) { // LogManager.Instance.AddLog(LogEventType.Warning, e, "异常日志"); } }
public InvalidNameException(NamePosition position, string name) : base($"{position.ToString()} name {name} contains invalid characters") { }