using System.Collections.Generic; using System; /** * PVE(无尽模式)怪物配置数据表处理类 * @Author: chenxin * @Date: 2020-10-12 12:13:44 */ namespace KTGMGemClient { public class EndlessEnemyData { /// /// 无尽模式怪物配置表 /// private static List endlessEnemyList; /// /// 根据怪物类型来分类一下数据 /// private static Dictionary> typeDic; private static Random random; public static void Init() { endlessEnemyList = JsonDataCenter.GetList(); typeDic = new Dictionary>(); random = new Random(); foreach (endless_enemy data in endlessEnemyList) { if (!typeDic.ContainsKey(data.type)) typeDic.Add(data.type, new List()); typeDic[data.type].Add(data); } } /// /// 根据怪物id获取怪物数据 /// /// id > 0:获取指定id的小怪, /// id = -1:从类型为1(小怪)随机, /// id = -2:从类型为2(精英怪)随机 /// id = -3:从所有小怪中随机 /// public static endless_enemy GetDataById(int id) { if (id > 0) { foreach (endless_enemy data in endlessEnemyList) { if (data.id == id) return data; } return null; } List list = endlessEnemyList; if (id == -1 || id == -2) list = typeDic[-id]; if (list.Count == 0) throw new ArgumentException("id 不规范 or 没有对应的怪物数据"); int index = random.Next(list.Count); return list[index]; } } }