using System.Collections.Generic; using UnityEngine; public partial class RandomNameConfig : IConfigPostProcess { private static Dictionary> m_RandomNameCfgs = new Dictionary>(); private static List m_RandomFirstNames = new List(); public void OnConfigParseCompleted() { int[] intarray = ConfigParse.GetMultipleStr(Sex); if (intarray != null && intarray.Length > 0) { for (int i = 0; i < intarray.Length; i++) { List list = null; m_RandomNameCfgs.TryGetValue(intarray[i], out list); if (list == null) { list = new List(); list.Add(this); m_RandomNameCfgs.Add(intarray[i], list); } else { list.Add(this); } } } if (!string.IsNullOrEmpty(RandomName1)) { m_RandomFirstNames.Add(this); } } public static string GetFirstName(int occupa) { List list = m_RandomFirstNames; //m_RandomNameCfgs.TryGetValue(occupa, out list); if (m_RandomFirstNames.IsNullOrEmpty()) return string.Empty; int cnt = list.Count; string str = list[Random.Range(0, cnt)].RandomName1; return str; } public static string GetSecondName(int occupa) { List list = null; m_RandomNameCfgs.TryGetValue(occupa, out list); int cnt = list.Count; if (list.IsNullOrEmpty()) return string.Empty; string str = list[Random.Range(0, cnt)].RandomName2; return str; } public static string GetFirstName(ref List randoms) { var list = m_RandomFirstNames; if (randoms.Count == 0) { for (int i = 0; i < list.Count; i++) { randoms.Add(i); } } var index = Random.Range(0, randoms.Count); var name = list[randoms[index]].RandomName1; randoms.RemoveAt(index); return name; } public static string GetSecondName(ref List randoms) { List list = null; var name = string.Empty; if (m_RandomNameCfgs.TryGetValue(1, out list)) { if (randoms.Count == 0) { for (int i = 0; i < list.Count; i++) { randoms.Add(i); } } var index = Random.Range(0, randoms.Count); name = list[randoms[index]].RandomName2; randoms.RemoveAt(index); } return name; } }