River Jiang
2020-10-27 24f59b89e9eabcfe948fc0ba304a8dbec2deda14
Assets/Scripts/Data/EndlessPortData.cs
@@ -33,7 +33,17 @@
        /// </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;
@@ -52,11 +62,77 @@
        /// </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;
@@ -72,24 +148,8 @@
                }
                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>
@@ -106,7 +166,9 @@
                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;
@@ -179,8 +241,7 @@
                    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]);
                }