| | |
| | | /// <summary> |
| | | /// 掉落概率总权重,即:表中掉落概率那一项全部加起来 |
| | | /// </summary> |
| | | public int DropTotalWeight; |
| | | public float DropTotalWeight; |
| | | |
| | | /// <summary> |
| | | /// 关卡等级 |
| | |
| | | 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)) |
| | |
| | | } |
| | | |
| | | /// <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> |
| | |
| | | { |
| | | 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; |