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】坐骑丹使用跳转选中优化

---
 Core/GameEngine/Model/Config/PetClassCostConfig.cs.meta |    4 
 System/Pet/PlayerPetDatas.cs                            |   88 +++++++++++++++++++--
 Core/GameEngine/Model/Config/PetClassCostConfig.cs      |   33 ++++---
 System/Mount/PlayerMountDatas.cs                        |   83 ++++++++++++++++++--
 4 files changed, 172 insertions(+), 36 deletions(-)

diff --git a/Core/GameEngine/Model/Config/PetClassCostConfig.cs b/Core/GameEngine/Model/Config/PetClassCostConfig.cs
index b1ab846..d431949 100644
--- a/Core/GameEngine/Model/Config/PetClassCostConfig.cs
+++ b/Core/GameEngine/Model/Config/PetClassCostConfig.cs
@@ -1,6 +1,6 @@
 锘�//--------------------------------------------------------
 //    [Author]:			绗簩涓栫晫
-//    [  Date ]:		   Saturday, January 06, 2018
+//    [  Date ]:		   Friday, January 04, 2019
 //--------------------------------------------------------
 
 using UnityEngine;
@@ -11,11 +11,12 @@
     
 	public partial class PetClassCostConfig : ConfigBase {
 
-		public int ID { get ; private set ; }
-		public int PetID { get ; private set ; }
-		public int Rank { get ; private set ; }
-		public int UpNeedExp { get ; private set ; }
-		public int AtkAdd { get ; private set ; }
+		public int ID { get ; private set ; }
+		public int PetID { get ; private set ; }
+		public int Rank { get ; private set ; }
+		public int UpNeedExp { get ; private set ; }
+		public int AtkAdd { get ; private set ; }
+		public int NeedExpTotal { get ; private set ; }
 
 		public override string getKey()
         {
@@ -25,15 +26,17 @@
 		public override void Parse() {
 			try
             {
-                ID=IsNumeric(rawContents[0]) ? int.Parse(rawContents[0]):0; 
-			
-				PetID=IsNumeric(rawContents[1]) ? int.Parse(rawContents[1]):0; 
-			
-				Rank=IsNumeric(rawContents[2]) ? int.Parse(rawContents[2]):0; 
-			
-				UpNeedExp=IsNumeric(rawContents[3]) ? int.Parse(rawContents[3]):0; 
-			
-				AtkAdd=IsNumeric(rawContents[4]) ? int.Parse(rawContents[4]):0; 
+                ID=IsNumeric(rawContents[0]) ? int.Parse(rawContents[0]):0; 
+			
+				PetID=IsNumeric(rawContents[1]) ? int.Parse(rawContents[1]):0; 
+			
+				Rank=IsNumeric(rawContents[2]) ? int.Parse(rawContents[2]):0; 
+			
+				UpNeedExp=IsNumeric(rawContents[3]) ? int.Parse(rawContents[3]):0; 
+			
+				AtkAdd=IsNumeric(rawContents[4]) ? int.Parse(rawContents[4]):0; 
+			
+				NeedExpTotal=IsNumeric(rawContents[5]) ? int.Parse(rawContents[5]):0; 
             }
             catch (Exception ex)
             {
diff --git a/Core/GameEngine/Model/Config/PetClassCostConfig.cs.meta b/Core/GameEngine/Model/Config/PetClassCostConfig.cs.meta
index dcb0300..74da88c 100644
--- a/Core/GameEngine/Model/Config/PetClassCostConfig.cs.meta
+++ b/Core/GameEngine/Model/Config/PetClassCostConfig.cs.meta
@@ -1,7 +1,7 @@
 fileFormatVersion: 2
 guid: a58409c48a307e24eb39a8c2e933c8e8
-timeCreated: 1515213576
-licenseType: Pro
+timeCreated: 1546593597
+licenseType: Free
 MonoImporter:
   serializedVersion: 2
   defaultReferences: []
diff --git a/System/Mount/PlayerMountDatas.cs b/System/Mount/PlayerMountDatas.cs
index a405961..b99f9f5 100644
--- a/System/Mount/PlayerMountDatas.cs
+++ b/System/Mount/PlayerMountDatas.cs
@@ -332,22 +332,23 @@
         }
         int GetMinLV = 100;
         int GetMountID = 0;
-        for (int j = 0; j < SortMount.Count; j++)//閫夊彇鍑哄彲鍗囩骇鍧愰獞绛夌骇鏈�浣庝笖鏈夋湭婵�娲绘妧鑳界殑鍧愰獞
+        List<int> IntListSkill = new List<int>();
+        for (int j = 0; j < SortMount.Count; j++)//閫夊彇鍑哄彲鍗囩骇鍧愰獞绛夌骇鏈�浣庝笖鏈夋湭婵�娲绘妧鑳界殑鍧愰獞鍒囩粡楠屾渶灏�
         {
             int Id = SortMount[j].HorseID;
             int GetHorseMaxLv = GetMountSkillMaxLV(Id);
             if (IntList.Contains(Id) && _DicHorse.ContainsKey(Id))
             {
-                if (_DicHorse[Id].Lv < GetMinLV && _DicHorse[Id].Lv< GetHorseMaxLv)
+                if (_DicHorse[Id].Lv < GetHorseMaxLv)
                 {
-                    GetMinLV = _DicHorse[Id].Lv;
-                    GetMountID = Id;
+                    IntListSkill.Add(Id);
                 }
             }
         }
-        if (GetMountID != 0 && ASingleFeedRedPoint.ContainsKey(GetMountID))
+        int SkillHorseId = GetRedPointMountID(IntListSkill);
+        if (SkillHorseId != 0 && ASingleFeedRedPoint.ContainsKey(SkillHorseId))
         {
-            ASingleFeedRedPoint[GetMountID].state = RedPointState.Simple;
+            ASingleFeedRedPoint[SkillHorseId].state = RedPointState.Simple;
             return;
         }
 
@@ -372,7 +373,7 @@
     }
 
     public int GetMinExpMount()
-    {    
+    {
         foreach (var key in ASingleFeedRedPoint.Keys)//褰撳瓨鍦ㄩ┋鍏荤孩鐐规椂閫変腑褰撴湁绾㈢偣鐨勯偅鍙�
         {
             if (ASingleFeedRedPoint[key].state == RedPointState.Simple)
@@ -382,11 +383,25 @@
         }
         int GetMountID = 0;
         int MountLV = 999;
-        
+        List<int> IntListSkill = new List<int>();
+        foreach (var key in _DicHorse.Keys)
+        {
+            var mountConfig = Config.Instance.Get<HorseConfig>(key);
+            if (_DicHorse[key].Lv < mountConfig.MaxLV)
+            {
+                IntListSkill.Add(key);
+            }
+        }
+        int SkillHorseId = GetRedPointMountID(IntListSkill);
+        if (SkillHorseId != 0)
+        {
+            GetMountID = SkillHorseId;
+            return GetMountID;
+        }
         foreach (var key in _DicHorse.Keys)//鏃犵孩鐐规椂璺宠浆閫変腑鏈�浣庨樁鏁颁笖鏈弧绾�
         {
             var mountConfig = Config.Instance.Get<HorseConfig>(key);
-            if (_DicHorse[key].Lv < MountLV && _DicHorse[key].Lv< mountConfig.MaxLV)
+            if (_DicHorse[key].Lv < MountLV && _DicHorse[key].Lv < mountConfig.MaxLV)
             {
                 GetMountID = key;
                 MountLV = _DicHorse[key].Lv;
@@ -395,6 +410,56 @@
         return GetMountID;
     }
 
+    private int GetRedPointMountID(List<int> MountList)
+    {
+        int GetSkillMinLv = 999;
+        for (int i = 0; i < MountList.Count; i++)
+        {
+            int SkillminLv = GetSkillLvDis(MountList[i]);
+            if (SkillminLv < GetSkillMinLv)
+            {
+                GetSkillMinLv = SkillminLv;
+            }
+        }
+
+        int mountId = 0;
+        int ExpNumber = 999999999;
+        for (int i = 0; i < MountList.Count; i++)
+        {
+            int SkillLv = GetSkillLvDis(MountList[i]);
+            if (SkillLv > GetSkillMinLv)
+            {
+                continue;
+            }
+            var Hor1 = HorseUpConfig.GetHorseIDAndLV(MountList[i], SkillLv);
+            var Hor2 = HorseUpConfig.GetHorseIDAndLV(MountList[i],_DicHorse[(MountList[i])].Lv);
+            int Exp = Hor1.NeedExpTotal - Hor2.NeedExpTotal - _DicHorse[(MountList[i])].Exp;
+            if (Exp < ExpNumber)
+            {
+                ExpNumber = Exp;
+                mountId = MountList[i];
+            }
+        }
+        return mountId;
+    }
+
+    private int GetSkillLvDis(int MountId)//鑾峰彇绂诲崌绾ф渶杩戠殑鎶�鑳界瓑绾�
+    {
+        int SkillLv = 0;
+        foreach (var key in GetMountSkillAndItem.Keys)
+        {
+            if (_DicHorse.ContainsKey(MountId) && GetMountSkillAndItem[key].HorseID == MountId)
+            {
+                if (GetMountSkillAndItem[key].HorseLV > _DicHorse[MountId].Lv)
+                {
+                    SkillLv = GetMountSkillAndItem[key].HorseLV;
+                    return SkillLv;
+                }
+            }
+        }
+        return SkillLv;
+    }
+
     public int GetMountSkillMaxLV(int MountId)//鑾峰彇鍧愰獞鏈�澶ф妧鑳界瓑绾�
     {
         int SkillLv = 0;
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