wangguan
2020-11-26 9af945552ac077706c175c00ad99dc4dfc662e9d
Assets/Scripts/Data/EndlessPortData.cs
@@ -29,7 +29,7 @@
        /// <summary>
        /// 掉落概率总权重,即:表中掉落概率那一项全部加起来
        /// </summary>
        public int DropTotalWeight;
        public float DropTotalWeight;
        /// <summary>
        /// 关卡等级
@@ -124,7 +124,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))
@@ -234,6 +234,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>
@@ -311,17 +353,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;