From f6abd3f706541c72633daa84ba2b47ba1a003d02 Mon Sep 17 00:00:00 2001
From: wangguan <wangguan@kt007.com>
Date: Fri, 06 Nov 2020 14:40:58 +0800
Subject: [PATCH] 修改攻击材质以及火宝石攻击速度播放

---
 Assets/Scripts/Data/EndlessPortData.cs |  116 ++++++++++++++++++++-------------------------------------
 1 files changed, 41 insertions(+), 75 deletions(-)

diff --git a/Assets/Scripts/Data/EndlessPortData.cs b/Assets/Scripts/Data/EndlessPortData.cs
index cbc772f..1a2f8a3 100644
--- a/Assets/Scripts/Data/EndlessPortData.cs
+++ b/Assets/Scripts/Data/EndlessPortData.cs
@@ -1,5 +1,6 @@
 using System.Collections.Generic;
 using System;
+using UnityEngine;
 
 /**
  * endless_port 无尽模式关卡配置表数据处理类
@@ -24,6 +25,11 @@
         /// 掉落概率总权重,即:表中掉落概率那一项全部加起来
         /// </summary>
         public int DropTotalWeight;
+
+        /// <summary>
+        /// 关卡等级
+        /// </summary>
+        public int PortLevel;
     }
 
     public class EndlessPortData
@@ -33,19 +39,14 @@
         /// </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 Dictionary<int, List<EndlessPortConfig>> portDic;
 
-        private static Random random;
+        private static System.Random random;
 
         /// <summary>
         /// 最大关卡
@@ -62,84 +63,37 @@
         /// </summary>
         public static void Init()
         {
-            random = new Random();
-            InitPortConfig();
-            InitTeachPortConfig();
-            List<List<EndlessPortConfig>> list = GetLevelWaveData(1);
-        }
-
-        /// <summary>
-        /// 初始化关卡配置
-        /// </summary>
-        private static void InitPortConfig()
-        {
+            random = new System.Random();
             endlessPortList = JsonDataCenter.GetList<endless_port>();
             portConfigList = new List<EndlessPortConfig>();
-            InitPortList(portConfigList, endlessPortList);
+            portDic = new Dictionary<int, List<EndlessPortConfig>>();
+            InitPortList();
         }
 
         /// <summary>
-        /// 初始化新手的关卡配置
+        /// 更新关卡数据的时候也重新初始化一次
         /// </summary>
-        private static void InitTeachPortConfig()
+        public static void InitPortList()
         {
-            List<endless_teachport> list = JsonDataCenter.GetList<endless_teachport>();
-            endlessTeachPortList = new List<endless_port>();
+            maxLevel = 0;
+            int? preLevel = null;
+            portConfigList.Clear();
+            portDic.Clear();
 
-            foreach (endless_teachport data in list)
+            foreach (endless_port data in endlessPortList)
             {
-                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;
+                if (!GameConfig.IsNewbie && data.level < 0) continue;
 
-                List<reward> rewardList = new List<reward>();
-                foreach (reward r in rewardList)
+                if (preLevel == null || preLevel != data.level)
                 {
-                    reward nr = new reward();
-                    nr.type = r.type;
-                    nr.id = r.id;
-                    nr.count = r.count;
-                    rewardList.Add(nr);
+                    preLevel = data.level;
+                    ++maxLevel;
                 }
-
-                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;
 
                 EndlessPortConfig param = new EndlessPortConfig();
                 param.Config = data;
                 param.EnemyData = EndlessEnemyData.GetDataById(data.enemy_id);
+                param.PortLevel = maxLevel;
                 int totalWeight = 0;
 
                 for (int i = 0; i < data.drop_rate.Count; ++i)
@@ -148,7 +102,12 @@
                 }
 
                 param.DropTotalWeight = totalWeight;
-                list.Add(param);
+                portConfigList.Add(param);
+
+                if (!portDic.ContainsKey(param.PortLevel))
+                    portDic.Add(param.PortLevel, new List<EndlessPortConfig>());
+
+                portDic[param.PortLevel].Add(param);
             }
         }
 
@@ -166,11 +125,11 @@
                 ret.Add(new List<EndlessPortConfig>());
             }
 
-            List<EndlessPortConfig> list = GameConfig.IsNewbie ? teachPortConfigList : portConfigList;
+            List<EndlessPortConfig> allLevelData = portDic[level];
 
-            foreach (EndlessPortConfig data in list)
+            foreach (EndlessPortConfig data in allLevelData)
             {
-                if (data.Config.level != level || data.Config.amount == 0) continue;
+                if (data.Config.amount == 0) continue;
 
                 ret[data.Config.wave - 1].Add(data);
             }
@@ -204,7 +163,14 @@
 
             for (int i = 0; i < waveData.Count; ++i)
             {
-                ret += waveData[i].Config.amount;
+                int count = waveData[i].Config.amount;
+                endless_enemy enemyData = EndlessEnemyData.GetDataById(waveData[i].Config.enemy_id);
+
+                // WTF...
+                if (enemyData.resource == 103)
+                    count *= 2;
+
+                ret += count;
             }
 
             return ret;

--
Gitblit v1.9.1