From 20ac119873a7d4fb82e8f36e53614de239d16925 Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期一, 29 四月 2019 16:54:31 +0800
Subject: [PATCH] Merge branch 'master' into SubWindow

---
 System/Message/RichTableEvent.cs |  228 ++++++++++++++++++++++++++++-----------------------------
 1 files changed, 112 insertions(+), 116 deletions(-)

diff --git a/System/Message/RichTableEvent.cs b/System/Message/RichTableEvent.cs
index 43e4182..34b3725 100644
--- a/System/Message/RichTableEvent.cs
+++ b/System/Message/RichTableEvent.cs
@@ -58,13 +58,12 @@
                                         if (cfg != null)
                                         {
                                             var _itemColor = cfg.ItemColor;
-                                            if (cfg.Type == 113)//缈呰唨
+                                            if (ItemLogicUtility.Instance.IsWing(id))//缈呰唨
                                             {
-                                                Dictionary<int, List<int>> userdatadic = null;
-                                                if (_dict.ContainsKey("userdata"))
+                                                if (_dict.ContainsKey("itemplus"))
                                                 {
-                                                    string userdata = _dict["userdata"];
-                                                    userdatadic = ConfigParse.Analysis(userdata);
+                                                    var itemplus = LitJson.JsonMapper.ToObject<ItemTipUtility.CustomItemPlus>(_dict["itemplus"]);
+                                                    var userdatadic = ConfigParse.Analysis(itemplus.UserData);
                                                     _itemColor = ItemLogicUtility.Instance.GetItemQuality(cfg.ID, userdatadic);
                                                 }
                                             }
@@ -397,125 +396,128 @@
         return string.Empty;
     }
 
+
+    EquipGemModel equipGemModel { get { return ModelCenter.Instance.GetModel<EquipGemModel>(); } }
     private void OnSingleClickItemCell(int itemId, RichTextMgr.HrefInfo hrefInfo)
     {
-        int[] stone = null;
-        if (hrefInfo.mSplits.ContainsKey("stone"))
+        ItemTipUtility.CustomItemPlus itemplus = default(ItemTipUtility.CustomItemPlus);
+        if (hrefInfo.mSplits.ContainsKey("itemplus"))
         {
-            try
-            {
-                stone = LitJson.JsonMapper.ToObject<int[]>(hrefInfo.mSplits["stone"]);
-            }
-            catch (Exception e)
-            {
-                DebugEx.Log(e.Message);
-            }
-        }
-        int itemCount = 0;
-        if (hrefInfo.mSplits.ContainsKey("itemcnt"))
-        {
-            itemCount = int.Parse(hrefInfo.mSplits["itemcnt"]);
-        }
-        int isBind = 0;
-        if (hrefInfo.mSplits.ContainsKey("isbind"))
-        {
-            isBind = int.Parse(hrefInfo.mSplits["isbind"]);
-        }
-        int strengthenLv = 0;
-        if (hrefInfo.mSplits.ContainsKey("strengthenlv"))
-        {
-            strengthenLv = int.Parse(hrefInfo.mSplits["strengthenlv"]);
-        }
-        int index = 0;
-        if (hrefInfo.mSplits.ContainsKey("place"))
-        {
-            index = int.Parse(hrefInfo.mSplits["place"]);
+            itemplus = LitJson.JsonMapper.ToObject<ItemTipUtility.CustomItemPlus>(hrefInfo.mSplits["itemplus"]);
         }
 
-        if (hrefInfo.mSplits.ContainsKey("equippartsuite")
-            && hrefInfo.mSplits["equippartsuite"] != string.Empty)
+        if (ItemLogicUtility.Instance.IsEquip(itemId))
         {
-            LitJson.JsonData _json = null;
-            try
+            var itemConfig = ItemConfig.Get(itemId);
+            Dictionary<int, int> gems = new Dictionary<int, int>();
+            Dictionary<int, bool> gemHoleActiveStates = new Dictionary<int, bool>();
+            if (itemplus.Stone != null)
             {
-                _json = LitJson.JsonMapper.ToObject(hrefInfo.mSplits["equippartsuite"]);
-            }
-            catch (Exception e)
-            {
-                DebugEx.Log(e.Message);
-            }
-        }
-
-        equipItems = null;
-        if (hrefInfo.mSplits.ContainsKey("equipitems")
-            && hrefInfo.mSplits["equipitems"] != string.Empty)
-        {
-            try
-            {
-                equipItems = LitJson.JsonMapper.ToObject<int[][]>(hrefInfo.mSplits["equipitems"]);
-            }
-            catch (Exception e)
-            {
-                DebugEx.Log(e.Message);
-            }
-        }
-
-        RoleParticularModel.EquipWash _equipWash = default(RoleParticularModel.EquipWash);
-        if (hrefInfo.mSplits.ContainsKey("equipwash")
-            && hrefInfo.mSplits["equipwash"] != string.Empty)
-        {
-            try
-            {
-                _equipWash = LitJson.JsonMapper.ToObject<RoleParticularModel.EquipWash>(hrefInfo.mSplits["equipwash"]);
-            }
-            catch (Exception e)
-            {
-                DebugEx.Log(e.Message);
-            }
-        }
-
-        Dictionary<int, List<int>> userdatadic = null;
-        if (hrefInfo.mSplits.ContainsKey("userdata"))
-        {
-            string userdata = hrefInfo.mSplits["userdata"];
-            userdatadic = ConfigParse.Analysis(userdata);
-        }
-        Dictionary<int, int> suitLvDict = null;
-        if (hrefInfo.mSplits.ContainsKey("suitlv"))
-        {
-            suitLvDict = new Dictionary<int, int>();
-            string suitLvData = hrefInfo.mSplits["suitlv"];
-            string[] split_data = suitLvData.Split('\'');
-            for (int i = 0; i < split_data.Length; i++)
-            {
-                string[] split_value = split_data[i].Split('_');
-                if (split_value.Length == 2)
+                for (int i = 0; i < itemplus.Stone.Length; i++)
                 {
-                    int key = int.Parse(split_value[0]);
-                    suitLvDict.Add(key, int.Parse(split_value[1]));
+                    gems.Add(i, itemplus.Stone[i]);
+                    if (i == 3)
+                    {
+                        gemHoleActiveStates.Add(i, itemplus.Stone[i] != 0);
+                    }
                 }
             }
-        }
 
-        if (hrefInfo.mSplits.ContainsKey("chatsenditem"))
-        {
-            var chatSendItem = LitJson.JsonMapper.ToObject<ChatCtrl.ChatSendItem>(hrefInfo.mSplits["chatsenditem"]);
-            itemId = chatSendItem.itemId;
-            itemCount = chatSendItem.count;
-            stone = chatSendItem.equipGems;
-            if (!string.IsNullOrEmpty(chatSendItem.useData))
+            for (int i = 0; i < EquipGemModel.EQUIPGEM_HOLE_COUNT; i++)
             {
-                userdatadic = ConfigParse.Analysis(chatSendItem.useData);
+                if (i < 3)
+                {
+                    gemHoleActiveStates.Add(i, equipGemModel.IsGemHoleOpen(i, itemplus.Star));
+                }
             }
+
+            var legendProperties = new List<Int2>();
+            Dictionary<int, List<int>> useDataDict = null;
+            if (!string.IsNullOrEmpty(itemplus.UserData))
+            {
+                useDataDict = ConfigParse.Analysis(itemplus.UserData);
+                if (useDataDict != null)
+                {
+                    foreach (var key in useDataDict.Keys)
+                    {
+                        var list = useDataDict[key];
+                        foreach (var value in list)
+                        {
+                            legendProperties.Add(new Int2(key, value));
+                        }
+                    }
+                }
+            }
+
+            List<Int2> trainProperties = new List<Int2>();
+            if (!itemplus.Wash.Equals(default(ItemTipUtility.CustomEquipWash)))
+            {
+                var washType = EquipTrainModel.GetTrainType(itemConfig.EquipPlace);
+                var trainConfig = EquipWashConfig.Get(washType, 1);
+                for (int i = 0; i < itemplus.Wash.Value.Length; i++)
+                {
+                    var propertyType = i == 0 ? trainConfig.config.attType1 : i == 1 ?
+                        trainConfig.config.attType2 : trainConfig.config.attType3;
+                    trainProperties.Add(new Int2(propertyType, itemplus.Wash.Value[i]));
+                }
+            }
+
+            Dictionary<EquipSuitType, int> suitLevels = new Dictionary<EquipSuitType, int>();
+            suitLevels.Add(EquipSuitType.TwoSuit, -1);
+            suitLevels.Add(EquipSuitType.FiveSuit, -1);
+            suitLevels.Add(EquipSuitType.EightSuit, -1);
+
+            List<int> suitplaces = new List<int>();
+
+            if (itemplus.Equips != null)
+            {
+                var stars = new List<int>();
+                for (int i = 0; i < itemplus.Equips.Length; i++)
+                {
+                    var array = itemplus.Equips[i];
+                    var config = ItemConfig.Get(array[0]);
+                    if (config.EquipPlace > 8)
+                    {
+                        continue;
+                    }
+                    stars.Add(array[1]);
+
+                    if (config.SuiteiD > 0)
+                    {
+                        suitplaces.Add(config.EquipPlace);
+                    }
+                }
+
+                stars.Sort((int x, int y) => { return x.CompareTo(y); });
+
+                var twoSuitLevel = stars.Count > 1 ? stars[1] : -1;
+                var fiveSuitLevel = stars.Count > 4 ? stars[4] : -1;
+                var eightSuitLevel = stars.Count > 7 ? stars[7] : -1;
+
+                suitLevels[EquipSuitType.TwoSuit] = twoSuitLevel;
+                suitLevels[EquipSuitType.FiveSuit] = fiveSuitLevel;
+                suitLevels[EquipSuitType.EightSuit] = eightSuitLevel;
+            }
+
+            ItemTipUtility.ShowCustomEquip(new ItemTipUtility.CustomEquipInfo()
+            {
+                itemId = itemId,
+                job = itemConfig.JobLimit,
+                strengthenLevel = itemplus.PlusLV,
+                starLevel = itemplus.Star,
+                gems = gems,
+                legendProperties = legendProperties,
+                score = ItemLogicUtility.Instance.GetEquipScore(PackType.Item, itemId, useDataDict, true),
+                gemHoleActiveStates = gemHoleActiveStates,
+                suitLevels = suitLevels,
+                suitPlaces = suitplaces,
+                trainProperties = trainProperties,
+            });
         }
-
-        //     ItemAttrData attrData = new ItemAttrData(itemId, true, (ulong)itemCount, -1,  false, PackType.Deleted,
-        //         "", userdatadic);
-        //     attrData.SetGemModel(stone);
-        //   attrData.SetStrengthData(strengthenLv, GetStrengthenType(itemId));
-        //   itemTipsModel.SetItemTipsModel(attrData);
-
-        ItemTipUtility.Show(itemId);
+        else
+        {
+            ItemTipUtility.Show(itemId);
+        }
     }
 
     List<RoleParticularModel.EquipSuit> equipSuitList = new List<RoleParticularModel.EquipSuit>();
@@ -555,12 +557,6 @@
             default:
                 return Language.Get("EquipSuitWhite");
         }
-    }
-
-    public static int GetStrengthenType(int _id)
-    {
-        var _type = 1;
-        return _type;
     }
 
     private static string GetTextColorByItemColor(string info, int _itemColor, Dictionary<string, string> dic)

--
Gitblit v1.8.0