public void Load() { CSVReader reader = new CSVReader(); reader.LoadText("Config/Disassemblygirl_Monstergroup.txt", 3); int rows = reader.GetRowCount(); for (int r = 0; r < rows; ++r) { string[] row = reader.GetRow(r); DisassemblygirlMonstergroupConfig ac = ConfigProcess(row) as DisassemblygirlMonstergroupConfig; configs.Add(ac.id, ac); } }
public object ConfigProcess(string[] row) { if (row.Length < 10) { return(null); } RowHelper rh = new RowHelper(row); DisassemblygirlMonstergroupConfig rec = new DisassemblygirlMonstergroupConfig(); rec.id = CSVUtility.ToInt(rh.Read()); //id rec.monstersA = rh.Read(); //怪物组A rec.monstersB = rh.Read(); //怪物组B rec.monstersC = rh.Read(); //怪物组C rec.monstersD = rh.Read(); //怪物组D rec.monstersE = rh.Read(); //怪物组E rec.boss = CSVUtility.ToInt(rh.Read()); //bossID rec.joinCount = CSVUtility.ToInt(rh.Read()); //每次加入战场单位数量 rec.joinInterval = CSVUtility.ToFloat(rh.Read()); //加入间隔(秒) rec.isBoss = CSVUtility.ToInt(rh.Read()); //是否是BOSS组 return(rec); }
public static MonsterGroupData FromConfig(DisassemblygirlMonstergroupConfig config) { Action <IList <int> > RandomShuffle = (IList <int> input) => { Random random = new Random(); int currentIndex = 0; int tempValue = 0; for (int index = 0; index < input.Count; index++) { currentIndex = random.Next(0, input.Count - index); tempValue = input[currentIndex]; input[currentIndex] = input[input.Count - 1 - index]; input[input.Count - 1 - index] = tempValue; } }; Func <string, IList <MonsterData> > WrapperMonsters = (string monsters) => { IList <MonsterData> monsterDatas = new List <MonsterData>(); if (monsters == "0") { return(monsterDatas); } IList <int> sourceIds = new List <int>(); foreach (string monsterConfig in monsters.Split('|')) { string[] parameters = monsterConfig.Split(':'); for (int index = 0, length = int.Parse(parameters[1]); index < length; index++) { sourceIds.Add(int.Parse(parameters[0])); } } RandomShuffle(sourceIds); foreach (int monsterID in sourceIds) { MonsterData monster = MonsterData.FromConfig(ConfigMgr.GetInstance().DisassemblygirlMonster.GetConfigById(monsterID)); monsterDatas.Add(monster); } return(monsterDatas); }; MonsterGroupData group = new MonsterGroupData(); group.id = config.id; group.jointInterval = config.joinInterval; group.joinCount = config.joinCount; group.isBoss = config.isBoss == 0 ? false : true; group.monstersA = WrapperMonsters(config.monstersA); group.monstersB = WrapperMonsters(config.monstersB); group.monstersC = WrapperMonsters(config.monstersC); group.monstersD = WrapperMonsters(config.monstersD); group.monstersE = WrapperMonsters(config.monstersE); if (config.boss != 0) { group.boss = MonsterData.FromConfig(ConfigMgr.GetInstance().DisassemblygirlMonster.GetConfigById(config.boss)); group.boss.isBoss = true; } return(group); }