From 77bdaf262106bfa69b9b83b664653cdb0249cb5f Mon Sep 17 00:00:00 2001
From: Client_PangDeRong <593317293@qq.com>
Date: 星期三, 26 九月 2018 18:01:17 +0800
Subject: [PATCH] 1885 增加神兽传奇属性预览

---
 System/KnapSack/Logic/ItemTipsModel.cs |  245 ++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 213 insertions(+), 32 deletions(-)

diff --git a/System/KnapSack/Logic/ItemTipsModel.cs b/System/KnapSack/Logic/ItemTipsModel.cs
index 79fa337..a5969ea 100644
--- a/System/KnapSack/Logic/ItemTipsModel.cs
+++ b/System/KnapSack/Logic/ItemTipsModel.cs
@@ -22,7 +22,10 @@
         public Dictionary<int, Dictionary<int, int>> legendAttrLvValuePreviewDict { get; private set; } // key 灞炴�D value 瑁呭闃剁骇锛屽睘鎬ф暟鍊�
         public Dictionary<int, int> wingsLegendAttrCntPreviewDict { get; private set; } //key 闃舵暟 value灞炴�ф暟
         public Dictionary<int, Dictionary<int, List<int>>> wingsLegendAttrValuePreviewDict { get; private set; } //key 闃舵暟 value 灞炴�D 灞炴�ф暟鍊�
-
+        public Dictionary<int, Dictionary<LegendAttrType, List<int>>> dogzLegendAttrIDPreviewDict { get; private set; } // key 瑁呭浣� value 灞炴�х被鍨嬶紝灞炴�D
+        public Dictionary<int, Dictionary<int, int>> dogzLegendAttrColorValuePreviewDict { get; private set; } // key 灞炴�D value 瑁呭鍝佽川锛屽睘鎬ф暟鍊�
+        public Dictionary<string, Dictionary<LegendAttrType, int>> dogzLegendAttrCntPreviewDict { get; private set; } // key 鍝佽川+鏄熺骇  value 灞炴�ф潯鐩暟
+        public Dictionary<int, List<int>> dogzLegendAttrTypeDict { get; private set; }
         public Dictionary<int, List<string>> guardDesDict { get; private set; }
 
         public Dictionary<int, PetInfoConfig> unlockPetDict { get; private set; }
@@ -113,6 +116,22 @@
                 }
             }
 
+            FuncConfigConfig dogzlegendAttrColor = Config.Instance.Get<FuncConfigConfig>("DogzLegendAttrColor");
+            dogzLegendAttrTypeDict = new Dictionary<int, List<int>>();
+            if (dogzlegendAttrColor != null)
+            {
+                JsonData jsonData = JsonMapper.ToObject(dogzlegendAttrColor.Numerical1);
+                foreach (var key in jsonData.Keys)
+                {
+                    List<int> attrIDlist = new List<int>();
+                    dogzLegendAttrTypeDict.Add(int.Parse(key), attrIDlist);
+                    for (int i = 0; i < jsonData[key].Count; i++)
+                    {
+                        attrIDlist.Add((int)jsonData[key][i]);
+                    }
+                }
+            }
+
             FuncConfigConfig legendAttrCountPreview = Config.Instance.Get<FuncConfigConfig>("LegendAttrCountPreview");
             JsonData legendAttrCntData = JsonMapper.ToObject(legendAttrCountPreview.Numerical1);
             legendAttrCntPreviewDict = new Dictionary<string, Dictionary<LegendAttrType, int>>();
@@ -128,6 +147,26 @@
                         for (i = 0; i < legendAttrCntData[color][star].Count; i++)
                         {
                             legendCntDic.Add((LegendAttrType)i, int.Parse(legendAttrCntData[color][star][i].ToString()));
+                        }
+                    }
+                }
+            }
+
+            FuncConfigConfig dogzlegendAttrCountPreview = Config.Instance.Get<FuncConfigConfig>("DogzLegendAttrCountPreview");
+            JsonData dogzlegendAttrCntData = JsonMapper.ToObject(dogzlegendAttrCountPreview.Numerical1);
+            dogzLegendAttrCntPreviewDict = new Dictionary<string, Dictionary<LegendAttrType, int>>();
+            foreach (var color in dogzlegendAttrCntData.Keys)
+            {
+                foreach (var star in dogzlegendAttrCntData[color].Keys)
+                {
+                    Dictionary<LegendAttrType, int> legendCntDic = new Dictionary<LegendAttrType, int>();
+                    dogzLegendAttrCntPreviewDict.Add(StringUtility.Contact(color, star), legendCntDic);
+                    if (dogzlegendAttrCntData[color][star].IsArray)
+                    {
+                        int i = 0;
+                        for (i = 0; i < dogzlegendAttrCntData[color][star].Count; i++)
+                        {
+                            legendCntDic.Add((LegendAttrType)i, int.Parse(dogzlegendAttrCntData[color][star][i].ToString()));
                         }
                     }
                 }
@@ -159,6 +198,32 @@
                 }
             }
 
+            FuncConfigConfig dogzlegendAttrRulePreview = Config.Instance.Get<FuncConfigConfig>("DogzLegendAttrRulePreview");
+            JsonData dogzlegendAttrRuleData = JsonMapper.ToObject(dogzlegendAttrRulePreview.Numerical1);
+            dogzLegendAttrIDPreviewDict = new Dictionary<int, Dictionary<LegendAttrType, List<int>>>();
+            foreach (var itemPlace in dogzlegendAttrRuleData.Keys)
+            {
+                Dictionary<LegendAttrType, List<int>> legendIdDic = new Dictionary<LegendAttrType, List<int>>();
+                dogzLegendAttrIDPreviewDict.Add(int.Parse(itemPlace.ToString()), legendIdDic);
+                if (dogzlegendAttrRuleData[itemPlace].IsArray)
+                {
+                    int i = 0;
+                    for (i = 0; i < dogzlegendAttrRuleData[itemPlace].Count; i++)
+                    {
+                        if (dogzlegendAttrRuleData[itemPlace][i].IsArray)
+                        {
+                            List<int> attrIdlist = new List<int>();
+                            legendIdDic.Add((LegendAttrType)i, attrIdlist);
+                            int j = 0;
+                            for (j = 0; j < dogzlegendAttrRuleData[itemPlace][i].Count; j++)
+                            {
+                                attrIdlist.Add(int.Parse(dogzlegendAttrRuleData[itemPlace][i][j].ToString()));
+                            }
+                        }
+                    }
+                }
+            }
+
             FuncConfigConfig legendAttrColorValuePreview = Config.Instance.Get<FuncConfigConfig>("LegendAttrValueByColorPreview");
             JsonData legendAttrColorData = JsonMapper.ToObject(legendAttrColorValuePreview.Numerical1);
             legendAttrColorValuePreviewDict = new Dictionary<int, Dictionary<int, int>>();
@@ -174,6 +239,26 @@
                         if (legendAttrColorData[attrID][i].IsArray)
                         {
                             legendValueDic.Add(int.Parse(legendAttrColorData[attrID][i][0].ToString()), int.Parse(legendAttrColorData[attrID][i][1].ToString()));
+                        }
+                    }
+                }
+            }
+
+            FuncConfigConfig dogzlegendAttrColorValuePreview = Config.Instance.Get<FuncConfigConfig>("DogzLegendAttrValueByColorPreview");
+            JsonData dogzlegendAttrColorData = JsonMapper.ToObject(dogzlegendAttrColorValuePreview.Numerical1);
+            dogzLegendAttrColorValuePreviewDict = new Dictionary<int, Dictionary<int, int>>();
+            foreach (var attrID in dogzlegendAttrColorData.Keys)
+            {
+                Dictionary<int, int> legendValueDic = new Dictionary<int, int>();
+                dogzLegendAttrColorValuePreviewDict.Add(int.Parse(attrID.ToString()), legendValueDic);
+                if (dogzlegendAttrColorData[attrID].IsArray)
+                {
+                    int i = 0;
+                    for (i = 0; i < dogzlegendAttrColorData[attrID].Count; i++)
+                    {
+                        if (dogzlegendAttrColorData[attrID][i].IsArray)
+                        {
+                            legendValueDic.Add(int.Parse(dogzlegendAttrColorData[attrID][i][0].ToString()), int.Parse(dogzlegendAttrColorData[attrID][i][1].ToString()));
                         }
                     }
                 }
@@ -1061,6 +1146,49 @@
             return s;
         }
 
+        public string GetDogzLegendAttrCntPreview(ItemAttrData attrData)
+        {
+            string s = "";
+            if (attrData.isCustom)
+            {
+                s = Language.Get("LegendAttPreview_MustTitle", attrData.legendDataDict.Count);
+            }
+            else
+            {
+                int attrCnt = 0;
+                string attrCntKey = StringUtility.Contact(attrData.itemConfig.ItemColor, attrData.itemConfig.StarLevel);
+                if (dogzLegendAttrCntPreviewDict.ContainsKey(attrCntKey))
+                {
+                    foreach (var key in dogzLegendAttrCntPreviewDict[attrCntKey].Keys)
+                    {
+                        switch (key)
+                        {
+                            case LegendAttrType.Normal:
+                                attrCnt += dogzLegendAttrCntPreviewDict[attrCntKey][key];
+                                break;
+                            case LegendAttrType.Pursuit:
+                                attrCnt += dogzLegendAttrCntPreviewDict[attrCntKey][key];
+                                break;
+                            case LegendAttrType.Fixed:
+                                attrCnt += dogzLegendAttrCntPreviewDict[attrCntKey][key];
+                                break;
+                        }
+                    }
+                }
+
+                if (attrData.itemConfig.StarLevel > 2)
+                {
+                    s = Language.Get("LegendAttPreview_MustTitle", attrCnt);
+                }
+                else
+                {
+                    s = Language.Get("LegendAttPreview_MightTitle", attrCnt);
+                }
+            }
+
+            return s;
+        }
+
         public string GetWingsLegendAttrCntPreview(ItemAttrData attrData)
         {
             string s = "";
@@ -1113,9 +1241,30 @@
                 attrDict.Add(idlist[i], valuelist[i]);
             }
 
-            if (itemConfig.EquipPlace != (int)RoleEquipType.retWing)
+            switch (itemConfig.EquipPlace)
             {
-                idlist.Sort(CompareLegendAttrType);
+                case 11:
+                    break;
+                case 1:
+                case 2:
+                case 3:
+                case 4:
+                case 5:
+                case 6:
+                case 7:
+                case 8:
+                case 9:
+                case 10:
+                case 12:
+                    idlist.Sort(CompareLegendAttrType);
+                    break;
+                case 101:
+                case 102:
+                case 103:
+                case 104:
+                case 105:
+                    idlist.Sort(CompareDogzLegendAttrType);
+                    break;
             }
 
             for (i = 0; i < idlist.Count; i++)
@@ -1230,28 +1379,46 @@
                         }
                      
                     }
-             
-                    if (itemConfig.EquipPlace != (int)RoleEquipType.retWing)
+
+                    switch (itemConfig.EquipPlace)
                     {
-                        s = GetTextColorByLegendType(GetLegendType(idlist[i]), s);
-                    }
-                    else
-                    {
-                        foreach (var key in wingsLegendAttrColorDict.Keys)
-                        {
-                            if (key == idlist[i])
+                        case 11:
+                            foreach (var key in wingsLegendAttrColorDict.Keys)
                             {
-                                foreach (var key2 in wingsLegendAttrColorDict[key].Keys)
+                                if (key == idlist[i])
                                 {
-                                    if (attrDict[idlist[i]] < key2)
+                                    foreach (var key2 in wingsLegendAttrColorDict[key].Keys)
                                     {
-                                        s = string.Format("<color=#{0}>{1}</color>", wingsLegendAttrColorDict[key][key2], s);
-                                        break;
+                                        if (attrDict[idlist[i]] < key2)
+                                        {
+                                            s = string.Format("<color=#{0}>{1}</color>", wingsLegendAttrColorDict[key][key2], s);
+                                            break;
+                                        }
                                     }
+                                    break;
                                 }
-                                break;
                             }
-                        }
+                            break;
+                        case 1:
+                        case 2:
+                        case 3:
+                        case 4:
+                        case 5:
+                        case 6:
+                        case 7:
+                        case 8:
+                        case 9:
+                        case 10:
+                        case 12:
+                            s = GetTextColorByLegendType(GetLegendType(idlist[i]), s);
+                            break;
+                        case 101:
+                        case 102:
+                        case 103:
+                        case 104:
+                        case 105:
+                            s = GetTextColorByLegendType(GetDogzLegendType(idlist[i]), s);
+                            break;
                     }
 
                     if (attrSB.Length <= 0)
@@ -1277,11 +1444,32 @@
             return 0;
         }
 
+        private int CompareDogzLegendAttrType(int start, int end)
+        {
+            int type1 = GetDogzLegendType(start);
+            int type2 = GetDogzLegendType(end);
+            if (type1.CompareTo(type2) != 0) return type1.CompareTo(type2);
+
+            return 0;
+        }
+
         private int GetLegendType(int id)
         {
             foreach (var key in equipLegendAttrTypeDict.Keys)
             {
                 if (equipLegendAttrTypeDict[key].Contains(id))
+                {
+                    return key;
+                }
+            }
+            return 0;
+        }
+
+        private int GetDogzLegendType(int id)
+        {
+            foreach (var key in dogzLegendAttrTypeDict.Keys)
+            {
+                if (dogzLegendAttrTypeDict[key].Contains(id))
                 {
                     return key;
                 }
@@ -1899,17 +2087,17 @@
         {
             legendIdlist = new List<int>();
             legendValuelist = new List<int>();
-            if (itemTipsModel.legendAttrIDPreviewDict.ContainsKey(itemConfig.EquipPlace))
+            if (itemTipsModel.dogzLegendAttrIDPreviewDict.ContainsKey(itemConfig.EquipPlace))
             {
-                foreach (var attrType in itemTipsModel.legendAttrIDPreviewDict[itemConfig.EquipPlace].Keys)
+                foreach (var attrType in itemTipsModel.dogzLegendAttrIDPreviewDict[itemConfig.EquipPlace].Keys)
                 {
                     switch (attrType)
                     {
                         case LegendAttrType.Pursuit:
-                            legendIdlist.AddRange(itemTipsModel.legendAttrIDPreviewDict[itemConfig.EquipPlace][attrType]);
+                            legendIdlist.AddRange(itemTipsModel.dogzLegendAttrIDPreviewDict[itemConfig.EquipPlace][attrType]);
                             break;
                         case LegendAttrType.Fixed:
-                            legendIdlist.AddRange(itemTipsModel.legendAttrIDPreviewDict[itemConfig.EquipPlace][attrType]);
+                            legendIdlist.AddRange(itemTipsModel.dogzLegendAttrIDPreviewDict[itemConfig.EquipPlace][attrType]);
                             break;
                     }
                 }
@@ -1917,18 +2105,11 @@
             int i = 0;
             for (i = 0; i < legendIdlist.Count; i++)
             {
-                if (itemTipsModel.legendAttrColorValuePreviewDict.ContainsKey(legendIdlist[i]))
+                if (itemTipsModel.dogzLegendAttrColorValuePreviewDict.ContainsKey(legendIdlist[i]))
                 {
-                    if (itemTipsModel.legendAttrColorValuePreviewDict[legendIdlist[i]].ContainsKey(itemConfig.ItemColor))
+                    if (itemTipsModel.dogzLegendAttrColorValuePreviewDict[legendIdlist[i]].ContainsKey(itemConfig.ItemColor))
                     {
-                        legendValuelist.Add(itemTipsModel.legendAttrColorValuePreviewDict[legendIdlist[i]][itemConfig.ItemColor]);
-                    }
-                }
-                else if (itemTipsModel.legendAttrLvValuePreviewDict.ContainsKey(legendIdlist[i]))
-                {
-                    if (itemTipsModel.legendAttrLvValuePreviewDict[legendIdlist[i]].ContainsKey(itemConfig.LV))
-                    {
-                        legendValuelist.Add(itemTipsModel.legendAttrLvValuePreviewDict[legendIdlist[i]][itemConfig.LV]);
+                        legendValuelist.Add(itemTipsModel.dogzLegendAttrColorValuePreviewDict[legendIdlist[i]][itemConfig.ItemColor]);
                     }
                 }
             }

--
Gitblit v1.8.0