using System.Collections.Generic;
|
using UnityEngine;
|
|
|
public partial class RandomNameConfig : IConfigPostProcess
|
{
|
private static Dictionary<int, List<RandomNameConfig>> m_RandomNameCfgs = new Dictionary<int, List<RandomNameConfig>>();
|
private static List<RandomNameConfig> m_RandomFirstNames = new List<RandomNameConfig>();
|
|
public void OnConfigParseCompleted()
|
{
|
int[] intarray = ConfigParse.GetMultipleStr<int>(Sex);
|
if (intarray != null && intarray.Length > 0)
|
{
|
for (int i = 0; i < intarray.Length; i++)
|
{
|
List<RandomNameConfig> list = null;
|
m_RandomNameCfgs.TryGetValue(intarray[i], out list);
|
if (list == null)
|
{
|
list = new List<RandomNameConfig>();
|
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<RandomNameConfig> 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<RandomNameConfig> 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<int> 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<int> randoms)
|
{
|
List<RandomNameConfig> 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;
|
}
|
}
|