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