From 8afc9ce1c752c24decad77e0989b367b8f2c4179 Mon Sep 17 00:00:00 2001 From: wangguan <wangguan@kt007.com> Date: Thu, 29 Oct 2020 14:34:52 +0800 Subject: [PATCH] Merge branch 'master' of ssh://172.16.1.52:8091/GemBattle --- Assets/Scripts/Data/EndlessPortData.cs | 73 ++++++++++++++++++++++++------------ 1 files changed, 48 insertions(+), 25 deletions(-) diff --git a/Assets/Scripts/Data/EndlessPortData.cs b/Assets/Scripts/Data/EndlessPortData.cs index e117da0..d1d5abe 100644 --- a/Assets/Scripts/Data/EndlessPortData.cs +++ b/Assets/Scripts/Data/EndlessPortData.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using System; +using UnityEngine; /** * endless_port 无尽模式关卡配置表数据处理类 @@ -24,6 +25,11 @@ /// 掉落概率总权重,即:表中掉落概率那一项全部加起来 /// </summary> public int DropTotalWeight; + + /// <summary> + /// 关卡等级 + /// </summary> + public int PortLevel; } public class EndlessPortData @@ -35,7 +41,12 @@ private static List<EndlessPortConfig> portConfigList; - private static Random random; + /// <summary> + /// 关卡配置字典 + /// </summary> + private static Dictionary<int, List<EndlessPortConfig>> portDic; + + private static System.Random random; /// <summary> /// 最大关卡 @@ -52,18 +63,32 @@ /// </summary> public static void Init() { + random = new System.Random(); endlessPortList = JsonDataCenter.GetList<endless_port>(); portConfigList = new List<EndlessPortConfig>(); - random = new Random(); + portDic = new Dictionary<int, List<EndlessPortConfig>>(); + InitPortList(portConfigList, endlessPortList); + } - foreach (endless_port data in endlessPortList) + 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) @@ -72,24 +97,13 @@ } param.DropTotalWeight = totalWeight; - portConfigList.Add(param); + list.Add(param); + + if (!portDic.ContainsKey(param.PortLevel)) + portDic.Add(param.PortLevel, new List<EndlessPortConfig>()); + + portDic[param.PortLevel].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> @@ -106,9 +120,11 @@ ret.Add(new List<EndlessPortConfig>()); } - foreach (EndlessPortConfig data in portConfigList) + List<EndlessPortConfig> allLevelData = portDic[level]; + + 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); } @@ -142,7 +158,14 @@ for (int i = 0; i < waveData.Count; ++i) { - ret += waveData[i].Config.amount; + int count = waveData[i].Config.amount; + endless_enemy enemyData = EndlessEnemyData.GetDataById(waveData[i].Config.enemy_id); + + // WTF... + if (enemyData.resource == 103) + count *= 2; + + ret += count; } return ret; -- Gitblit v1.9.1