| | |
| | | /// </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 Random random; |
| | | |
| | |
| | | /// </summary> |
| | | public static void Init() |
| | | { |
| | | random = new Random(); |
| | | InitPortConfig(); |
| | | InitTeachPortConfig(); |
| | | List<List<EndlessPortConfig>> list = GetLevelWaveData(1); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 初始化关卡配置 |
| | | /// </summary> |
| | | private static void InitPortConfig() |
| | | { |
| | | endlessPortList = JsonDataCenter.GetList<endless_port>(); |
| | | portConfigList = new List<EndlessPortConfig>(); |
| | | random = new Random(); |
| | | InitPortList(portConfigList, endlessPortList); |
| | | } |
| | | |
| | | foreach (endless_port data in 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) |
| | | { |
| | | foreach (endless_port data in srcList) |
| | | { |
| | | if (data.level > maxLevel) |
| | | maxLevel = data.level; |
| | |
| | | } |
| | | |
| | | param.DropTotalWeight = totalWeight; |
| | | portConfigList.Add(param); |
| | | list.Add(param); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 根据关卡等级获取boss资源id |
| | | /// </summary> |
| | | /// <param name="level">关卡等级</param> |
| | | /// <returns>如果返回-1查找失败</returns> |
| | | public static int GetResIdByLevel(int level) |
| | | { |
| | | foreach (endless_port data in endlessPortList) |
| | | { |
| | | if (data.level == level) |
| | | return data.resource; |
| | | } |
| | | |
| | | return -1; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | ret.Add(new List<EndlessPortConfig>()); |
| | | } |
| | | |
| | | foreach (EndlessPortConfig data in portConfigList) |
| | | List<EndlessPortConfig> list = GameConfig.IsNewbie ? teachPortConfigList : portConfigList; |
| | | |
| | | foreach (EndlessPortConfig data in list) |
| | | { |
| | | if (data.Config.level != level || data.Config.amount == 0) continue; |
| | | |
| | |
| | | |
| | | int val = random.Next(waveData[i].DropTotalWeight); |
| | | |
| | | // cx test |
| | | // if (val <= waveData[i].Config.drop_rate[j]) |
| | | if (val <= waveData[i].Config.drop_rate[j]) |
| | | // 命中 |
| | | ret.Add(waveData[i].Config.drop[j]); |
| | | } |