From aadfae81e6a511cd2c062ab0b05f3ee3419f1a7f Mon Sep 17 00:00:00 2001
From: wangguan <wangguan@kt007.com>
Date: Wed, 23 Dec 2020 20:15:14 +0800
Subject: [PATCH] 选中BUFF塔播放相应的特效

---
 Assets/Scripts/TowerDefense/Level/EndlessBuff/EndlessBuffManager.cs |   56 ++++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 46 insertions(+), 10 deletions(-)

diff --git a/Assets/Scripts/TowerDefense/Level/EndlessBuff/EndlessBuffManager.cs b/Assets/Scripts/TowerDefense/Level/EndlessBuff/EndlessBuffManager.cs
index 2e930ee..2522a5c 100644
--- a/Assets/Scripts/TowerDefense/Level/EndlessBuff/EndlessBuffManager.cs
+++ b/Assets/Scripts/TowerDefense/Level/EndlessBuff/EndlessBuffManager.cs
@@ -34,7 +34,12 @@
                 new CritDamageAdd(),
                 new CritBulletAdd(),
                 new SlowDown(),
-                new FireRateAdd()
+                new FireRateAdd(),
+                new SkillLevelUp(),
+                new DecreaseWoodChargeTime(),
+                new FrostProbabilityAdd(),
+                new FrostDamageAdd(),
+                new FrostTimeAdd()
             };
         }
 
@@ -51,16 +56,22 @@
                 EndlessBuffData.RemoveFromBuffPool(buff.Config.id);
 
             BuffList.Add(buff);
+            EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.PlayBuffPS, buff.Config.get_buff);
+
+
             EndlessBuff endlessBuff = GetBuffInstanceByType((EndlessBuffEffectType)buff.Config.buff_effect[0]);
 
-            endlessBuff.BuffList.Add(buff);
-            endlessBuff.Handle();
-
-            // 如果是一次性生效的buff,直接移除掉
-            if (buff.LifeCycleType == EndlessBuffLifeCycleType.Once)
+            if (endlessBuff != null)
             {
-                endlessBuff.BuffList.Remove(buff);
-                RemoveBuff(buff);
+                endlessBuff.BuffList.Add(buff);
+                endlessBuff.Handle();
+
+                // 如果是一次性生效的buff,直接移除掉
+                if (buff.LifeCycleType == EndlessBuffLifeCycleType.Once)
+                {
+                    endlessBuff.BuffList.Remove(buff);
+                    RemoveBuff(buff);
+                }
             }
         }
 
@@ -72,7 +83,7 @@
         {
             BuffList.Remove(buff);
             EndlessBuff endlessBuff = GetBuffInstanceByType((EndlessBuffEffectType)buff.Config.buff_effect[0]);
-            endlessBuff.LoseEffect();
+            endlessBuff?.LoseEffect();
         }
 
         /// <summary>
@@ -111,7 +122,7 @@
         {
             List<EndlessBuffConfig> ret = new List<EndlessBuffConfig>();
             // 暂且先这么处理吧 如果1:火 2:水 3:木
-            int attributeId = (int)Mathf.Floor(id / 10000f);
+            int attributeId = (int)Mathf.Floor(id / 100f);
 
             for (int i = 0; i < BuffList.Count; ++i)
             {
@@ -147,7 +158,32 @@
         /// <returns></returns>
         public EndlessBuff GetBuffInstanceByType(EndlessBuffEffectType type)
         {
+            int tmp = (int)type - 1;
+            if ((int)type - 1 >= instanceList.Count) return null;
+
             return instanceList[(int)type - 1];
         }
+
+        /// <summary>
+        /// 处理PVE无尽模式buff增加的伤害
+        /// </summary>
+        /// <param name="finalDamage"></param>
+        public float ProcessEndlessBuffAttack(float finalDamage, int elfId)
+        {
+            List<EndlessBuffConfig> list = EndlessBuffManager.instance.GetBuffListByEffectType(EndlessBuffEffectType.AttackAdd, elfId);
+
+            if (list.Count == 0) return 0;
+
+            float ratio = 0;
+            float add = 0;
+
+            for (int i = 0; i < list.Count; ++i)
+            {
+                ratio += list[i].Config.buff_effect[1];
+                add += list[i].Config.buff_effect[2];
+            }
+
+            return finalDamage * (ratio / 100f) + add;
+        }
     }
 }
\ No newline at end of file

--
Gitblit v1.9.1