using System.Collections.Generic; /** * endless_port 无尽模式关卡配置表数据处理类 * @Author: chenxin * @Date: 2020-10-10 17:11:23 */ namespace KTGMGemClient { public class EndlessPortConfig { /// /// 配置表数据 /// public endless_port Config; /// /// 预先随机好的敌人数据,spawnAgent时直接取这个数据,不再动态随机 /// public endless_enemy EnemyData; } public class EndlessPortData { /// /// 无尽模式关卡配置表 /// private static List endlessPortList; private static List portConfigList; /// /// 最大关卡 /// /// private static int maxLevel { get; set; } public static int MaxLevel { get { return maxLevel; } } /// /// 数据初始化 /// public static void Init() { endlessPortList = JsonDataCenter.GetList(); portConfigList = new List(); foreach (endless_port data in endlessPortList) { if (data.level > maxLevel) maxLevel = data.level; EndlessPortConfig param = new EndlessPortConfig(); param.Config = data; param.EnemyData = EndlessEnemyData.GetDataById(data.enemy_id); portConfigList.Add(param); } } /// /// 根据关卡等级获取boss资源id /// /// 关卡等级 /// 如果返回-1查找失败 public static int GetResIdByLevel(int level) { foreach (endless_port data in endlessPortList) { if (data.level == level) return data.resource; } return -1; } /// /// 根据关卡等级获取关卡的所有波数据,如果本波次敌人数量为0,直接忽略掉 /// /// 关卡等级 /// public static List> GetLevelWaveData(int level) { List> ret = new List>(); for (int i = 0; i < 5; ++i) { ret.Add(new List()); } foreach (EndlessPortConfig data in portConfigList) { if (data.Config.level != level || data.Config.amount == 0) continue; ret[data.Config.wave - 1].Add(data); } for (int i = 0; i < ret.Count; ++i) { if (ret[i].Count == 0) { ret.Remove(ret[i]); --i; } } return ret; } /// /// 根据关卡等级和波次获得该波次的所有敌人数量 /// /// /// /// public static int GetWaveEnemiesCount(int level, int wave) { List> list = GetLevelWaveData(level); if (list.Count == 0) return 0; List waveData = list[wave]; int ret = 0; for (int i = 0; i < waveData.Count; ++i) { ret += waveData[i].Config.amount; } return ret; } } }