From ddbf782ddd4e00be1ac9b0d27ef3cacda0c9d624 Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期一, 11 三月 2019 11:26:08 +0800
Subject: [PATCH] 3335 修改聊天发送装备

---
 System/Chat/ChatCtrl.cs |   72 +++++++++++++++--------------------
 1 files changed, 31 insertions(+), 41 deletions(-)

diff --git a/System/Chat/ChatCtrl.cs b/System/Chat/ChatCtrl.cs
index 1fe10f2..6262d28 100644
--- a/System/Chat/ChatCtrl.cs
+++ b/System/Chat/ChatCtrl.cs
@@ -164,6 +164,8 @@
         get { return ModelCenter.Instance.GetModel<FriendsModel>(); }
     }
 
+    EquipGemModel equipGemModel { get { return ModelCenter.Instance.GetModel<EquipGemModel>(); } }
+
     public Dictionary<ChatInfoType, List<string>> achievementRandoms = new Dictionary<ChatInfoType, List<string>>();
 
     private ChatCtrl()
@@ -766,23 +768,22 @@
                 data.richText.Append(content.Substring(index, matchArray[i].Index - index));
                 index = matchArray[i].Index + matchArray[i].Length;
                 string detail = matchArray[i].Groups[1].Value;
-                string[] strarray = detail.Split('|');
-                int itemID = 0;
-                if (int.TryParse(strarray[0], out itemID))
+                var chatSendItem = LitJson.JsonMapper.ToObject<ChatSendItem>(detail);
+                if (chatSendItem.itemId != 0)
                 {
-                    ItemConfig cfg = ItemConfig.Get(itemID);
-                    if (cfg != null)
+                    ItemConfig itemConfig = ItemConfig.Get(chatSendItem.itemId);
+                    if (itemConfig != null)
                     {
                         try
                         {
-                            string append = string.Format("<a><Word info=item id={0} userdata={4} chatsend=1/>|showitem={0} isbind={1} itemcnt={2} stone={3} userdata={4} suitLv={5} suitCnt={6} place={7} equipwash={8}</a>",
-                                      strarray[0], strarray[1], strarray[2], strarray[3], strarray[4], strarray[5], strarray[6], strarray[7], strarray[8]);
-                            append = UIHelper.AppendStringColor(cfg.ItemColor, append);
+                            string append = string.Format("<a><Word info=item id={0} chatsenditem={1} chatsend=1/>|showitem={0} chatsenditem={1}</a>",
+                                      chatSendItem.itemId, detail);
+                            append = UIHelper.AppendStringColor(itemConfig.ItemColor, append);
                             data.richText.Append(append);
                         }
                         catch (Exception e)
                         {
-                            data.richText.Append(cfg.ItemName);
+                            data.richText.Append(itemConfig.ItemName);
                             DebugEx.Log(e.Message);
                         }
                     }
@@ -857,41 +858,21 @@
                 if (cfg.ItemName == matchArray[i].Groups[1].Value)
                 {
                     bool equip = itemPlaceList[i].packType == PackType.Equip;
-                    uint[] stones = equip ? PlayerStoneData.Instance.GetStoneInfo(itemPlaceList[i].itemPlace) : null;
-                    _textBuilder.Append(StringUtility.Contact("#item#", itemPlaceList[i].itemId,
-                                                              "|", itemPlaceList[i].isBind,
-                                                              "|", itemPlaceList[i].count,
-                                                              "|", stones != null ? LitJson.JsonMapper.ToJson(stones) :
-                                                              LitJson.JsonMapper.ToJson(new uint[0]),
-                                                              "|"));
-                    if (itemPlaceList[i].useDataDict != null && itemPlaceList[i].useDataDict.Count > 0)
+                    List<EquipGem> equipGems = null;
+                    if (equip)
                     {
-                        foreach (int key in itemPlaceList[i].useDataDict.Keys)
-                        {
-                            List<int> intarray = itemPlaceList[i].useDataDict[key];
-                            var _array = intarray.ToArray();
-                            _textBuilder.Append(StringUtility.Contact("'", key, "':", _array != null ? LitJson.JsonMapper.ToJson(_array) :
-                                                              LitJson.JsonMapper.ToJson(new int[0])));
-                            _textBuilder.Append(",");
-                        }
+                        equipGemModel.TryGetEquipGems(itemPlaceList[i].itemPlace, out equipGems);
                     }
-
-                    _textBuilder.Append("|");
-                    _textBuilder.Append(itemPlaceList[i].itemPlace);
-                    _textBuilder.Append("|");
-                    var _wash = ModelCenter.Instance.GetModel<EquipWashModel>().GetWashEquipInfo(itemPlaceList[i].itemPlace);
-                    if (_wash != null && equip)
+                    _textBuilder.Append("#item#");
+                    var chatSendItem = new ChatSendItem()
                     {
-                        _textBuilder.Append("{");
-                        int[] _array = _wash.proValuelist == null ? new int[0] : new int[_wash.proValuelist.Length];
-                        for (int k = 0; k < _array.Length; k++)
-                        {
-                            _array[k] = (int)_wash.proValuelist[k].XLAttrValue;
-                        }
-                        _textBuilder.Append(StringUtility.Contact("\"LV\":", _wash.XLAttrLV, ",\"Place\":", _wash.EquipPlace,
-                            ",\"Value\":", LitJson.JsonMapper.ToJson(_array)));
-                        _textBuilder.Append("}");
-                    }
+                        itemId = (int)itemPlaceList[i].itemId,
+                        isBind = (int)itemPlaceList[i].isBind,
+                        count = (int)itemPlaceList[i].count,
+                        equipGems = equipGems,
+                        useData = itemPlaceList[i].itemInfo.userData,
+                    };
+                    _textBuilder.Append(LitJson.JsonMapper.ToJson(chatSendItem));
                     _textBuilder.Append("#item#");
                     if (_recently != null)
                     {
@@ -1159,6 +1140,15 @@
         return RedPointState.None;
     }
     #endregion
+
+    public struct ChatSendItem
+    {
+        public int itemId;
+        public int isBind;
+        public int count;
+        public List<EquipGem> equipGems;
+        public string useData;
+    }
 }
 public struct ChatExtraData
 {

--
Gitblit v1.8.0