| | |
| | | using System.Collections.Generic; |
| | | using System; |
| | | using UnityEngine; |
| | | |
| | | /** |
| | | * endless_port 无尽模式关卡配置表数据处理类 |
| | |
| | | /// 掉落概率总权重,即:表中掉落概率那一项全部加起来 |
| | | /// </summary> |
| | | public int DropTotalWeight; |
| | | |
| | | /// <summary> |
| | | /// 关卡等级 |
| | | /// </summary> |
| | | public int PortLevel; |
| | | } |
| | | |
| | | public class EndlessPortData |
| | |
| | | /// </summary> |
| | | private static List<endless_port> endlessPortList; |
| | | |
| | | /// <summary> |
| | | /// 无尽模式新手关卡配置表 |
| | | /// </summary> |
| | | private static List<endless_port> endlessTeachPortList; |
| | | |
| | | private static List<EndlessPortConfig> portConfigList; |
| | | |
| | | /// <summary> |
| | | /// 新手用 |
| | | /// 关卡配置字典 |
| | | /// </summary> |
| | | private static List<EndlessPortConfig> teachPortConfigList; |
| | | private static Dictionary<int, List<EndlessPortConfig>> portDic; |
| | | |
| | | private static Random random; |
| | | private static System.Random random; |
| | | |
| | | /// <summary> |
| | | /// 最大关卡 |
| | |
| | | /// </summary> |
| | | public static void Init() |
| | | { |
| | | random = new Random(); |
| | | InitPortConfig(); |
| | | InitTeachPortConfig(); |
| | | List<List<EndlessPortConfig>> list = GetLevelWaveData(1); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 初始化关卡配置 |
| | | /// </summary> |
| | | private static void InitPortConfig() |
| | | { |
| | | random = new System.Random(); |
| | | endlessPortList = JsonDataCenter.GetList<endless_port>(); |
| | | portConfigList = new List<EndlessPortConfig>(); |
| | | portDic = new Dictionary<int, List<EndlessPortConfig>>(); |
| | | InitPortList(portConfigList, endlessPortList); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 初始化新手的关卡配置 |
| | | /// </summary> |
| | | private static void InitTeachPortConfig() |
| | | { |
| | | List<endless_teachport> list = JsonDataCenter.GetList<endless_teachport>(); |
| | | endlessTeachPortList = new List<endless_port>(); |
| | | |
| | | foreach (endless_teachport data in list) |
| | | { |
| | | endless_port newData = new endless_port(); |
| | | newData.id = data.id; |
| | | newData.level = data.level; |
| | | newData.boss_name = data.boss_name; |
| | | newData.resource = data.resource; |
| | | newData.wave = data.wave; |
| | | newData.tunel = data.tunel; |
| | | newData.enemy_id = data.enemy_id; |
| | | newData.amount = data.amount; |
| | | newData.interval = data.interval; |
| | | newData.b_hp = data.b_hp; |
| | | newData.b_speed = data.b_speed; |
| | | newData.b_coin = data.b_coin; |
| | | newData.cooldown = data.cooldown; |
| | | |
| | | List<reward> rewardList = new List<reward>(); |
| | | foreach (reward r in rewardList) |
| | | { |
| | | reward nr = new reward(); |
| | | nr.type = r.type; |
| | | nr.id = r.id; |
| | | nr.count = r.count; |
| | | rewardList.Add(nr); |
| | | } |
| | | |
| | | newData.drop = rewardList; |
| | | |
| | | List<int> rateList = new List<int>(); |
| | | foreach (int r in rateList) |
| | | { |
| | | rateList.Add(r); |
| | | } |
| | | |
| | | newData.drop_rate = rateList; |
| | | newData.tunel_bg = data.tunel_bg; |
| | | endlessTeachPortList.Add(newData); |
| | | } |
| | | |
| | | teachPortConfigList = new List<EndlessPortConfig>(); |
| | | InitPortList(teachPortConfigList, endlessTeachPortList); |
| | | } |
| | | |
| | | private static void InitPortList(List<EndlessPortConfig> list, List<endless_port> srcList) |
| | | { |
| | | maxLevel = 0; |
| | | int? preLevel = null; |
| | | |
| | | foreach (endless_port data in srcList) |
| | | { |
| | | if (data.level > maxLevel) |
| | | maxLevel = data.level; |
| | | if (!GameConfig.IsNewbie && data.level < 0) continue; |
| | | |
| | | if (preLevel == null || preLevel != data.level) |
| | | { |
| | | preLevel = data.level; |
| | | ++maxLevel; |
| | | } |
| | | |
| | | EndlessPortConfig param = new EndlessPortConfig(); |
| | | param.Config = data; |
| | | param.EnemyData = EndlessEnemyData.GetDataById(data.enemy_id); |
| | | param.PortLevel = maxLevel; |
| | | int totalWeight = 0; |
| | | |
| | | for (int i = 0; i < data.drop_rate.Count; ++i) |
| | |
| | | |
| | | param.DropTotalWeight = totalWeight; |
| | | list.Add(param); |
| | | |
| | | if (!portDic.ContainsKey(param.PortLevel)) |
| | | portDic.Add(param.PortLevel, new List<EndlessPortConfig>()); |
| | | |
| | | portDic[param.PortLevel].Add(param); |
| | | } |
| | | } |
| | | |
| | |
| | | ret.Add(new List<EndlessPortConfig>()); |
| | | } |
| | | |
| | | List<EndlessPortConfig> list = GameConfig.IsNewbie ? teachPortConfigList : portConfigList; |
| | | List<EndlessPortConfig> allLevelData = portDic[level]; |
| | | |
| | | foreach (EndlessPortConfig data in list) |
| | | foreach (EndlessPortConfig data in allLevelData) |
| | | { |
| | | if (data.Config.level != level || data.Config.amount == 0) continue; |
| | | if (data.Config.amount == 0) continue; |
| | | |
| | | ret[data.Config.wave - 1].Add(data); |
| | | } |