Selaa lähdekoodia

升级升星事件

lcn 4 kuukautta sitten
vanhempi
commit
059b7d66c9

+ 2 - 2
Assets/Scripts/GameLogic/Combat/CombatTool/CombatHeroController.cs

@@ -96,8 +96,8 @@ namespace GameLogic.Combat.CombatTool
 
             if (isSkillUp)
             {
-                List<SkillConfig> skillConfigs = combatHeroInfo.skillConfigs;
-                combatHeroEntity.CombatHeroSkillControl.UpdateSkill(skillConfigs);
+                // List<SkillConfig> skillConfigs = combatHeroInfo.skillConfigs;
+                combatHeroEntity.CombatHeroSkillControl.UpdateSkill(combatHeroInfo.unLockSkills);
             }
         }
 

+ 6 - 3
Assets/Scripts/GameLogic/Combat/Hero/CombatHeroInfo.cs

@@ -55,6 +55,9 @@ public class CombatHeroInfo
     public float maxDisTo=2*2;
     // public int[] skillId;
     // public List<SkillConfig> skillConfigs;
+    /// <summary>
+    /// 所有已解锁技能的ID
+    /// </summary>
     public List<int> unLockSkills;
     public bool isGpu;
     public string heroName;
@@ -99,6 +102,8 @@ public class CombatHeroInfo
         attack = (EncryptionLong)(modelConfig.attack * powerUpConfig.ATKFactor * factor);
         shanbi = (EncryptionInt)(modelConfig.shanbi * powerUpConfig.SHANBIFactor * factor);
         expGain = (EncryptionLong)(modelConfig.expGain * powerUpConfig.EXPFactor * factor);
+        
+        CalUnLockSkill();
     }
     
     protected void CalAttribute()
@@ -113,14 +118,12 @@ public class CombatHeroInfo
         maxDis = modelConfig.range_atk;
         maxDisTo = maxDis * maxDis;
         heroType = modelConfig.heroType;
-
-        CalUnLockSkill();
     }
 
     /// <summary>
     /// 计算解锁技能
     /// </summary>
-    protected void CalUnLockSkill()
+    public void CalUnLockSkill()
     {
         unLockSkills = new List<int>();
         for (int i = 0; i < modelConfig.skillID.Length; i++)

+ 4 - 3
Assets/Scripts/GameLogic/Combat/Hero/CombatHeroSkillControl.cs

@@ -55,11 +55,12 @@ namespace GameLogic.Combat.Hero
         }
 
 
-        public void UpdateSkill(List<SkillConfig> skillConfigs)
+        public void UpdateSkill(List<int> skillIDs)
         {
-            for (int i = 0; i < skillConfigs.Count; i++)
+            for (int i = 0; i < skillIDs.Count; i++)
             {
-                SkillConfig skillConfig = skillConfigs[i];
+                SkillConfig skillConfig = ConfigComponent.Instance.Get<SkillConfig>(skillIDs[i]);
+                // SkillConfig skillConfig = skillIDs[i];
                 SkillBasic skillBasic= GetSkillBasic(skillConfig.IDGroup);
                 if (skillBasic == null)
                 {

+ 5 - 3
Assets/Scripts/GameLogic/CombatScenesTool/TestCombatHeroConfig.cs

@@ -19,13 +19,15 @@ namespace GameLogic.CombatScenesTool
             public void CopyToCombatHeroInfo(CombatHeroInfo combatHeroInfo)
             {
                 combatHeroInfo.InitMonster(heroID, level);
-                int[] skill= combatHeroInfo.modelConfig.skillID;
-                combatHeroInfo.skillConfigs = new List<SkillConfig>();
+                int[] skill = combatHeroInfo.modelConfig.skillID;
+                // combatHeroInfo.skillConfigs = new List<SkillConfig>();
+                combatHeroInfo.unLockSkills.Clear();
                 for (int i = 0; i < skill.Length; i++)
                 {
                     int id = skill[i] * 10 + 1;
                     SkillConfig skillConfig=   ConfigComponent.Instance.Get<SkillConfig>(id);
-                    combatHeroInfo.skillConfigs .Add(skillConfig);
+                    // combatHeroInfo.skillConfigs .Add(skillConfig);
+                    combatHeroInfo.unLockSkills.Add(id);
                 }
                 // combatHeroInfo.modelName = modelName;
                 combatHeroInfo.hp.Value = (hp);

+ 45 - 1
Assets/Scripts/GameLogic/Hero/HeroController.cs

@@ -119,13 +119,20 @@ namespace GameLogic.Hero
             EventManager.Instance.Dispatch(CustomEventType.HeroPowerUp, data);
             if (upType == HeroUpType.Level)
             {
+                SkillUpConfig upConfig = PlayerManager.Instance.heroController
+                    .IsLevelUpGetNewSkill(heroInfo.level.Value);
+                
+                data.isSkillUp = upConfig.ID > 0;
                 EventManager.Instance.Dispatch(CustomEventType.HeroLvUp, data);
             }
             else if (upType == HeroUpType.Promote)
             {
+                SkillUpConfig upConfig = PlayerManager.Instance.heroController
+                    .IsStarUpGetNewSkill(heroInfo.star.Value);
+                
+                data.isSkillUp = upConfig.ID > 0;
                 EventManager.Instance.Dispatch(CustomEventType.HeroPromote, data);
             }
-            
         }
         
         public void InitHeroes()
@@ -345,6 +352,43 @@ namespace GameLogic.Hero
 
             return isUnLock;
         }
+
+
+        /// <summary>
+        /// 判断【等级】是否可以解锁新技能
+        /// </summary>
+        /// <param name="level"></param>
+        /// <returns></returns>
+        public SkillUpConfig IsLevelUpGetNewSkill(int level)
+        {
+            SkillUpConfig upConfig = new SkillUpConfig();
+            foreach (SkillUpConfig skillUpConfig in PlayerManager.Instance.skillUpConfigs)
+            {
+                if (skillUpConfig.upType == 1 && level == skillUpConfig.upValue)
+                {
+                    return upConfig;
+                }
+            }
+            return upConfig;
+        }
+        
+        /// <summary>
+        /// 判断【星级】是否可以解锁新技能
+        /// </summary>
+        /// <param name="star"></param>
+        /// <returns></returns>
+        public SkillUpConfig IsStarUpGetNewSkill(int star)
+        {
+            SkillUpConfig upConfig = new SkillUpConfig();
+            foreach (SkillUpConfig skillUpConfig in PlayerManager.Instance.skillUpConfigs)
+            {
+                if (skillUpConfig.upType == 2 && star == skillUpConfig.upValue)
+                {
+                    return upConfig;
+                }
+            }
+            return upConfig;
+        }
         
     }
 }