From d3d0662762f352caae67198e5e2a1e4e5d856b5c Mon Sep 17 00:00:00 2001
From: client_Zxw <826696702@qq.com>
Date: 星期五, 04 一月 2019 17:28:11 +0800
Subject: [PATCH] 5693 【1.4.100】坐骑丹使用跳转选中优化

---
 System/Pet/PlayerPetDatas.cs |   88 +++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 78 insertions(+), 10 deletions(-)

diff --git a/System/Pet/PlayerPetDatas.cs b/System/Pet/PlayerPetDatas.cs
index 37775a4..9904460 100644
--- a/System/Pet/PlayerPetDatas.cs
+++ b/System/Pet/PlayerPetDatas.cs
@@ -340,7 +340,7 @@
                 int _NeedExp = PetClassCostConfig.GetPetIdAndRank(petID, _DicPetBack[petID].PetClass).UpNeedExp;
                 int NeedExp = _NeedExp - _DicPetBack[petID].petExp;
                 int NeedNumber = Mathf.CeilToInt((float)NeedExp / PetDanExp);
-                if (itemCount>= NeedNumber)
+                if (itemCount >= NeedNumber)
                 {
                     ListInt.Add(petID);
                 }
@@ -356,7 +356,8 @@
                 return;
             }
         }
-        for (int i = 0; i < ListInt.Count; i++)//閫夋嫨鍑哄崌绾х伒瀹犵瓑绾ф渶浣庝笖鏈夋妧鑳芥湭瑙i攣鐨�
+        List<int> IntListSkill = new List<int>();
+        for (int i = 0; i < ListInt.Count; i++)//閫夋嫨鍑哄崌绾х伒瀹犵瓑绾ф渶浣庝笖鏈夋妧鑳芥湭瑙i攣鐨勪笖缁忛獙鏈�鎺ヨ繎
         {
             if (_DicPetBack.ContainsKey(ListInt[i]))
             {
@@ -366,17 +367,17 @@
                     return;
                 }
                 int[] SkillUnLockInt = PetConfig.SkillUnLock;
-                int SkillLvMax = SkillUnLockInt[(SkillUnLockInt.Length-1)];
-                if (_DicPetBack[(ListInt[i])].PetClass < petLv && _DicPetBack[(ListInt[i])].PetClass<SkillLvMax)
+                int SkillLvMax = SkillUnLockInt[(SkillUnLockInt.Length - 1)];
+                if (_DicPetBack[(ListInt[i])].PetClass < SkillLvMax)
                 {
-                    petLv = _DicPetBack[(ListInt[i])].PetClass;
-                    GetPetId = (ListInt[i]);
+                    IntListSkill.Add((ListInt[i]));
                 }
             }
         }
-        if (GetPetId != 0 && CultivateRedPoint.ContainsKey(GetPetId))
+        int SkillPetId = GetRedPointPetID(IntListSkill);
+        if (SkillPetId != 0 && CultivateRedPoint.ContainsKey(SkillPetId))
         {
-            CultivateRedPoint[GetPetId].state = RedPointState.Simple;
+            CultivateRedPoint[SkillPetId].state = RedPointState.Simple;
             return;
         }
 
@@ -399,8 +400,60 @@
         }
     }
 
+
+    private int GetRedPointPetID(List<int> PetList)
+    {
+        int GetSkillMinLv = 999;
+        for (int i = 0; i < PetList.Count; i++)
+        {
+            int SkillminLv = GetSkillLvDis(PetList[i]);
+            if (SkillminLv < GetSkillMinLv)
+            {
+                GetSkillMinLv = SkillminLv;
+            }
+        }
+
+        int petId = 0;
+        int ExpNumber = 999999999;
+        for (int i = 0; i < PetList.Count; i++)
+        {
+            int SkillLv = GetSkillLvDis(PetList[i]);
+            if (SkillLv > GetSkillMinLv)
+            {
+                continue;
+            }
+            var Pet1 = PetClassCostConfig.GetPetIdAndRank(PetList[i], SkillLv);
+            var Pet2 = PetClassCostConfig.GetPetIdAndRank(PetList[i], _DicPetBack[(PetList[i])].PetClass);
+            int Exp = Pet1.NeedExpTotal - Pet2.NeedExpTotal - _DicPetBack[(PetList[i])].petExp;
+            if (Exp < ExpNumber)
+            {
+                ExpNumber = Exp;
+                petId = PetList[i];
+            }
+        }
+        return petId;
+    }
+    private int GetSkillLvDis(int PetId)//鑾峰彇绂诲崌绾ф渶杩戠殑鎶�鑳界瓑绾�
+    {
+        int SkillLv = 0;
+        var petInfo = Config.Instance.Get<PetInfoConfig>(PetId);
+        if (petInfo == null)
+        {
+            return 0;
+        }
+        int[] ListPetSkillUnLock = petInfo.SkillUnLock;
+        for (int i = 0; i < ListPetSkillUnLock.Length; i++)
+        {
+            if (_DicPetBack.ContainsKey(PetId) && ListPetSkillUnLock[i] > _DicPetBack[PetId].PetClass)
+            {
+                SkillLv = ListPetSkillUnLock[i];
+                return SkillLv;
+            }
+        }
+        return SkillLv;
+    }
     public int GetMinPetExp()
-    {     
+    {
         foreach (var key in CultivateRedPoint.Keys)//褰撳瓨鍦ㄥ煿鍏荤孩鐐规椂锛岄�変腑褰撴湁绾㈢偣鐨勯偅鍙�
         {
             if (CultivateRedPoint[key].state == RedPointState.Simple)
@@ -408,9 +461,24 @@
                 return key;
             }
         }
+
+        List<int> IntListSkill = new List<int>();
+        foreach (var key in _DicPetBack.Keys)
+        {
+            var petConfig = Config.Instance.Get<PetInfoConfig>(key);
+            if (_DicPetBack[key].PetClass < petConfig.MaxRank)
+            {
+                IntListSkill.Add(key);
+            }
+        }
+        int SkillPetId = GetRedPointPetID(IntListSkill);
+        if (SkillPetId != 0)
+        {
+            return SkillPetId;
+        }
         int GetPetId = 0;
         int GetPetLv = 999;
-        
+
         foreach (var key in _DicPetBack.Keys)//鏃犵孩鐐规椂璺宠浆閫変腑绛夌骇鏈�浣庣殑
         {
             var config = Config.Instance.Get<PetInfoConfig>(key);

--
Gitblit v1.8.0