From bd0ba263761a866ca0d698169d2d83b6a11c35e7 Mon Sep 17 00:00:00 2001 From: CoderM <coderm@qq.com> Date: Thu, 10 Dec 2020 17:04:37 +0800 Subject: [PATCH] CoderM: 增加SDKJSON处理 --- Assets/Scripts/Data/EndlessPortData.cs | 103 +++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 91 insertions(+), 12 deletions(-) diff --git a/Assets/Scripts/Data/EndlessPortData.cs b/Assets/Scripts/Data/EndlessPortData.cs index 6d45576..fb8d96b 100644 --- a/Assets/Scripts/Data/EndlessPortData.cs +++ b/Assets/Scripts/Data/EndlessPortData.cs @@ -29,7 +29,7 @@ /// <summary> /// 掉落概率总权重,即:表中掉落概率那一项全部加起来 /// </summary> - public int DropTotalWeight; + public float DropTotalWeight; /// <summary> /// 关卡等级 @@ -64,6 +64,12 @@ /// <value></value> private static int maxLevel { get; set; } + /// <summary> + /// 新手总关卡数 + /// </summary> + /// <value></value> + public static int NewbieTotalLevel { get; private set; } + public static int MaxLevel { get { return maxLevel; } @@ -80,7 +86,6 @@ portDic = new Dictionary<int, List<EndlessPortConfig>>(); InitPortList(); InitPortEnemiesTotalHP(); - int score = GetLevelScore(1); } /// <summary> @@ -101,6 +106,9 @@ { preLevel = data.level; ++maxLevel; + + if (data.level < 0) + ++NewbieTotalLevel; } EndlessPortConfig param = new EndlessPortConfig(); @@ -125,7 +133,7 @@ totalWeight += data.drop_rate[i]; } - param.DropTotalWeight = totalWeight; + param.DropTotalWeight = (float)data.drop_rate[0] / (float)totalWeight; portConfigList.Add(param); if (!portDic.ContainsKey(param.PortLevel)) @@ -235,6 +243,48 @@ } /// <summary> + /// 根据关卡等级和波次获得该波次的掉落概率 + /// </summary> + /// <param name="level"></param> + /// <param name="wave"></param> + /// <returns></returns> + public static float GetDropRate(int level, int wave) + { + List<List<EndlessPortConfig>> list = GetLevelWaveData(level); + if (list.Count == 0) return 0; + Debug.Log($"level:{level} wave:{wave}"); + List<EndlessPortConfig> waveData = list[wave]; + + EndlessPortConfig tmpConfig = waveData[0]; + if (tmpConfig != null) + { + return tmpConfig.DropTotalWeight; + } + return 0; + } + + /// <summary> + /// 根据关卡等级和波次获得该波次的掉落BOX + /// </summary> + /// <param name="level"></param> + /// <param name="wave"></param> + /// <returns></returns> + public static reward GetDropReward(int level, int wave) + { + List<List<EndlessPortConfig>> list = GetLevelWaveData(level); + if (list.Count == 0) return null; + + List<EndlessPortConfig> waveData = list[wave]; + + EndlessPortConfig tmpConfig = waveData[0]; + if (tmpConfig != null) + { + return tmpConfig.Config.drop; + } + return null; + } + + /// <summary> /// 根据关卡等级和波次获得该波次的所有敌人数量 /// </summary> /// <param name="level"></param> @@ -312,17 +362,17 @@ { if (waveData[i].Config.tunel != tunel) continue; - for (int j = 0; j < waveData[i].Config.drop.Count; ++j) - { - // 概率为0 - if (waveData[i].Config.drop_rate[j] == 0) continue; + // for (int j = 0; j < waveData[i].Config.drop.Count; ++j) + // { + // // 概率为0 + // if (waveData[i].Config.drop_rate[j] == 0) continue; - int val = random.Next(waveData[i].DropTotalWeight); + // float val = UnityEngine.Random.Range(0, waveData[i].DropTotalWeight); - if (val <= waveData[i].Config.drop_rate[j]) - // 命中 - ret.Add(waveData[i].Config.drop[j]); - } + // if (val <= waveData[i].Config.drop_rate[j]) + // // 命中 + // ret.Add(waveData[i].Config.drop[j]); + // } } return ret; @@ -340,5 +390,34 @@ return list[0][0].Config.bonus; } + + /// <summary> + /// 根据关卡等级和波次获得该波次可出怪的所有赛道(1~5) + /// </summary> + /// <param name="level"></param> + /// <param name="wave"></param> + /// <returns></returns> + public static List<int> GetAllTunelByLevelWave(int level, int wave) + { + List<int> ret = new List<int>(); + List<List<EndlessPortConfig>> list = GetLevelWaveData(level); + + if (list.Count == 0) return ret; + + List<EndlessPortConfig> waveData = list[wave]; + + if (waveData == null) + { + Debug.LogError($"---- 找不到该波次信息,关卡:{level} 波次索引:{wave} ----"); + return ret; + } + + for (int i = 0; i < waveData.Count; ++i) + { + ret.Add(waveData[i].Config.tunel); + } + + return ret; + } } } \ No newline at end of file -- Gitblit v1.9.1