浏览代码

修改bug

DESKTOP-BGJIU14\ck 1 天之前
父节点
当前提交
3219e690f5
共有 2 个文件被更改,包括 100 次插入90 次删除
  1. 92 8
      Assets/Scripts/GameLogic/Combat/Hero/CombatHeroInfo.cs
  2. 8 82
      Assets/Scripts/GameLogic/Hero/HeroInfo.cs

+ 92 - 8
Assets/Scripts/GameLogic/Combat/Hero/CombatHeroInfo.cs

@@ -25,7 +25,7 @@ public class CombatHeroInfo
     public EncryptionLong hp = new EncryptionLong();
     public EncryptionLong defense = new EncryptionLong();
     public EncryptionLong attack = new EncryptionLong();
-
+    protected Map<HeroAttributeType, float> attributeValue = new Map<HeroAttributeType, float>();
 
     // public long 
     public EncryptionFloat attSpeed
@@ -171,10 +171,12 @@ public class CombatHeroInfo
     /// 最后伤害减少
     /// </summary>
     public float finallyHarmReduce;
+
     /// <summary>
     /// 最终伤害增加 buff伤害除外
     /// </summary>
     public float finallyHarmAdd;
+
     /// <summary>
     /// 1=英雄 2=小怪 3=精英怪 4=boss
     /// </summary>
@@ -204,7 +206,6 @@ public class CombatHeroInfo
     /// </summary>
     public int TaoismSkillId;
 
-   
 
     public float GetAttSpeed
     {
@@ -395,17 +396,25 @@ public class CombatHeroInfo
                     switch (VARIABLE.Key)
                     {
                         case 1:
-                            hp += VARIABLE.Value;
+                            ComputeHeroAttributeType((int)HeroAttributeType.HP, VARIABLE.Value);
+                            // hp += VARIABLE.Value;
                             break;
                         case 2:
-                            defense += VARIABLE.Value;
+                            ComputeHeroAttributeType((int)HeroAttributeType.DEF, VARIABLE.Value);
+                            // defense += VARIABLE.Value;
                             break;
                         case 3:
-                            attack += VARIABLE.Value;
+                            ComputeHeroAttributeType((int)HeroAttributeType.ATT, VARIABLE.Value);
+                            // attack += VARIABLE.Value;
                             break;
                     }
                 }
             }
+
+            if (isMonster)
+            {
+                AddAttributeValue();
+            }
         }
     }
 
@@ -431,12 +440,9 @@ public class CombatHeroInfo
     protected void CalAttribute()
     {
         CalBasicAttribute();
-
-
         // skillId = modelConfig.skillID;
         modelName = modelConfig.model;
         isGpu = modelConfig.isUseGpu;
-
         heroType = modelConfig.heroType;
     }
 
@@ -476,4 +482,82 @@ public class CombatHeroInfo
         CombatHeroInfo combatHeroInfo = (CombatHeroInfo)MemberwiseClone();
         return combatHeroInfo;
     }
+
+    protected void ComputeHeroAttributeType(int shuxingID, float value)
+    {
+        HeroAttributeType heroAttributeType = (HeroAttributeType)shuxingID;
+        if (attributeValue.TryGetValue(heroAttributeType, out float oldValue))
+        {
+            attributeValue[heroAttributeType] = oldValue + value;
+        }
+        else
+        {
+            attributeValue.Add(heroAttributeType, value);
+        }
+
+        // attributeValue.Add((HeroAttributeType)shuxingID,);
+    }
+
+    protected void AddAttributeValue()
+    {
+      
+
+        for (attributeValue.Begin(); attributeValue.Next();)
+        {
+            HeroAttributeType heroAttributeType = attributeValue.Key;
+            float value = attributeValue.Value;
+            switch (heroAttributeType)
+            {
+                case HeroAttributeType.HP:
+                    hp.Value += (int)value;
+                    break;
+                case HeroAttributeType.ATT:
+                    attack.Value += (int)value;
+                    break;
+                case HeroAttributeType.DEF:
+                    defense.Value += (int)value;
+                    break;
+
+                case HeroAttributeType.Gold:
+                    Metal += value;
+                    break;
+                case HeroAttributeType.Wood:
+                    Wood += value;
+                    break;
+                case HeroAttributeType.Fire:
+                    Fire += value;
+                    break;
+                case HeroAttributeType.Water:
+                    Water += value;
+                    break;
+                case HeroAttributeType.Earth:
+                    Earth += value;
+                    break;
+                case HeroAttributeType.Shields:
+                    Shield.Value += (int)value;
+                    break;
+            }
+        }
+        for (attributeValue.Begin(); attributeValue.Next();)
+        {
+            HeroAttributeType heroAttributeType = attributeValue.Key;
+            float value = attributeValue.Value;
+            switch (heroAttributeType)
+            {
+                case HeroAttributeType.HP_BL:
+                    hp.Value += (long)(hp.Value * (value / 100f));
+                    break;
+                case HeroAttributeType.ATT_BL:
+                    attack.Value += (long)(attack.Value * (value / 100f));
+                    break;
+                case HeroAttributeType.DEF_BL:
+                    defense.Value += (long)(defense.Value * (value / 100f));
+                    break;
+                case HeroAttributeType.ShengShi_BL:
+                    shenshi.Value += (long)(shenshi.Value * (value / 100f));
+                    break;
+            }
+        }
+        attributeValue.Clear();
+    }
 }

+ 8 - 82
Assets/Scripts/GameLogic/Hero/HeroInfo.cs

@@ -30,7 +30,7 @@ namespace GameLogic.Hero
 
         // public List<int> ImmortalBond = new List<int>();
 
-        private Map<HeroAttributeType, float> attributeValue = new Map<HeroAttributeType, float>();
+      
 
         public HeroInfo()
         {
@@ -252,16 +252,19 @@ namespace GameLogic.Hero
             switch (currSentimentEffectConfig.effectType)
             {
                 case 1:
-                    attack += (EncryptionLong)(attack.Value * currSentimentEffectConfig.effectVale[0] * 0.01f);
+                    ComputeHeroAttributeType((int)HeroAttributeType.ATT_BL, currSentimentEffectConfig.effectVale[0]);
+                    // attack += (EncryptionLong)(attack.Value * currSentimentEffectConfig.effectVale[0] * 0.01f);
                     break;
                 case 2:
                     gongFaStrength += currSentimentEffectConfig.effectVale[0];
                     break;
                 case 3:
-                    hp += (EncryptionLong)(hp.Value * currSentimentEffectConfig.effectVale[0] * 0.01f);
+                    ComputeHeroAttributeType((int)HeroAttributeType.HP_BL, currSentimentEffectConfig.effectVale[0]);
+                    // hp += (EncryptionLong)(hp.Value * currSentimentEffectConfig.effectVale[0] * 0.01f);
                     break;
                 case 4:
-                    defense += (EncryptionLong)(defense.Value * currSentimentEffectConfig.effectVale[0] * 0.01f);
+                    ComputeHeroAttributeType((int)HeroAttributeType.DEF_BL, currSentimentEffectConfig.effectVale[0]);
+                    // defense += (EncryptionLong)(defense.Value * currSentimentEffectConfig.effectVale[0] * 0.01f);
                     break;
                 case 5:
                     int type = currSentimentEffectConfig.effectVale[0];
@@ -312,84 +315,7 @@ namespace GameLogic.Hero
             }
         }
 
-        private void AddAttributeValue()
-        {
-            for (attributeValue.Begin(); attributeValue.Next();)
-            {
-                HeroAttributeType heroAttributeType = attributeValue.Key;
-                float value = attributeValue.Value;
-                switch (heroAttributeType)
-                {
-                    case HeroAttributeType.HP:
-                        hp.Value += (int)value;
-                        break;
-                    case HeroAttributeType.ATT:
-                        attack.Value += (int)value;
-                        break;
-                    case HeroAttributeType.DEF:
-                        defense.Value += (int)value;
-                        break;
-                    case HeroAttributeType.HP_BL:
-                        hp.Value += (long)(hp.Value * (value / 100f));
-                        break;
-                    case HeroAttributeType.ATT_BL:
-                        attack.Value += (long)(attack.Value * (value / 100f));
-                        break;
-                    case HeroAttributeType.DEF_BL:
-                        defense.Value += (long)(defense.Value * (value / 100f));
-                        break;
-                    case HeroAttributeType.ShengShi_BL:
-                        shenshi.Value += (long)(shenshi.Value * (value / 100f));
-                        break;
-                    case HeroAttributeType.Gold:
-                        Metal += value;
-                        break;
-                    case HeroAttributeType.Wood:
-                        Wood += value;
-                        break;
-                    case HeroAttributeType.Fire:
-                        Fire += value;
-                        break;
-                    case HeroAttributeType.Water:
-                        Water += value;
-                        break;
-                    case HeroAttributeType.Earth:
-                        Earth += value;
-                        break;
-                    case HeroAttributeType.Shields:
-                        Shield.Value += (int)value;
-                        break;
-                    // default:
-                    //     if (attributeBlValue.TryGetValue((HeroAttributeType)shuxingID, out var value1)
-                    //        )
-                    //     {
-                    //         attributeBlValue[(HeroAttributeType)shuxingID] = value1 + value;
-                    //     }
-                    //     else
-                    //     {
-                    //         attributeBlValue.Add((HeroAttributeType)shuxingID, value);
-                    //     }
-                    //
-
-                    // break;
-                }
-            }
-            attributeValue.Clear();
-        }
-
-        private void ComputeHeroAttributeType(int shuxingID, float value)
-        {
-            HeroAttributeType heroAttributeType = (HeroAttributeType)shuxingID;
-            if (attributeValue.TryGetValue(heroAttributeType, out float oldValue))
-            {
-                attributeValue[heroAttributeType] = oldValue + value;
-            }
-            else
-            {
-                attributeValue.Add(heroAttributeType, value);
-            }
+       
 
-            // attributeValue.Add((HeroAttributeType)shuxingID,);
-        }
     }
 }