From a3a2c47c6a49ac41ab289e3e6dafb8cc83871739 Mon Sep 17 00:00:00 2001
From: Client_PangDeRong <593317293@qq.com>
Date: 星期六, 18 八月 2018 10:07:49 +0800
Subject: [PATCH] [1885]处理神兽数据

---
 System/Dogz/DogzModel.cs |  173 +++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 148 insertions(+), 25 deletions(-)

diff --git a/System/Dogz/DogzModel.cs b/System/Dogz/DogzModel.cs
index 0103a56..6c2fbb9 100644
--- a/System/Dogz/DogzModel.cs
+++ b/System/Dogz/DogzModel.cs
@@ -6,12 +6,33 @@
 using UnityEngine;
 namespace Snxxz.UI
 {
-    public class DogzModel : Model
+    public class DogzModel : Model,IBeforePlayerDataInitialize,IAfterPlayerDataInitialize,IPlayerLoginOk
     {
+        PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
+
         public override void Init()
         {
             ParseConfig();
         }
+
+        public void OnBeforePlayerDataInitialize()
+        {
+            addAssistCnt = 0;
+            dogzAssistStateDict.Clear();
+        }
+
+        public void OnAfterPlayerDataInitialize()
+        {
+           
+        }
+
+        public void OnPlayerLoginOk()
+        {
+            SetDogzEquipInfo();
+            playerPack.RefreshItemCountAct -= RefreshDogzEquipInfo;
+            playerPack.RefreshItemCountAct += RefreshDogzEquipInfo;
+        }
+
         public override void UnInit()
         {
 
@@ -43,7 +64,6 @@
             AddAssistItem = int.Parse(_funcCfg.Numerical2);
             AddAssistItemCnt = ConfigParse.GetMultipleStr<int>(_funcCfg.Numerical3);
             m_DogzEquipStrenLimit = ConfigParse.GetDic<int, int>(_funcCfg.Numerical4);
-            dogzAssists = new List<int>();
         }
 
         /// <summary>
@@ -127,26 +147,127 @@
         }
 
         #region 鍗忚
-        public List<int> dogzAssists { get; private set; } //褰撳墠鍔╂垬绁炲吔鍒楄〃
-        public event Action UpdateAssistDogzEvent;
-        public void UpdateAssistDogz()
+
+        public int addAssistCnt { get; private set; } //棰濆璐拱鐨勫姪鎴樻暟
+        public void SetServerAddAssistDogzCnt(HA3C0_tagMCDogzInfo info)
         {
-            dogzAssists.Clear();
+            addAssistCnt = info.BuyHelpbattleCount;
+            DogzAssistDefaultCnt += addAssistCnt;
+        }
+
+        public event Action UpdateAssistDogzEvent;
+        Dictionary<int, int> dogzAssistStateDict = new Dictionary<int, int>(); //绁炲吔鍔╂垬
+        public void SetServerAssistDogzState(HA3C1_tagMCDogzHelpbattleState info)
+        {
+            if(!dogzAssistStateDict.ContainsKey(info.DogzID))
+            {
+                dogzAssistStateDict.Add(info.DogzID,info.BatteState);
+            }
+            else
+            {
+                dogzAssistStateDict[info.DogzID] = info.BatteState;
+            }
+
             if (UpdateAssistDogzEvent != null)
             {
                 UpdateAssistDogzEvent();
             }
         }
 
+        public int GetAssistDogzCount()
+        {
+            int assistCnt = 0;
+            foreach(var key in dogzAssistStateDict.Keys)
+            {
+                if(key == 1)
+                {
+                    assistCnt += 1;
+                }
+            }
+            return assistCnt;
+        }
+
+        public bool TryGetAssistDogzState(int dogzId)
+        {
+            int state = 0;
+            dogzAssistStateDict.TryGetValue(dogzId,out state);
+            return state == 0 ? false : true;
+        }
+
+        public void SetDogzEquipInfo()
+        {
+            m_DogzEquipDict.Clear();
+            SinglePackModel singlePack = playerPack.GetSinglePackModel(PackType.rptDogzEquip);
+            if (singlePack == null) return;
+
+            Dictionary<int, ItemModel> pairs = singlePack.GetPackModelIndexDict();
+            foreach(var index in pairs.Keys)
+            {
+                ItemModel itemModel = pairs[index];
+                int dogzId = GetDogzIDByIndex(index);
+                if (!m_DogzEquipDict.ContainsKey(dogzId))
+                {
+                    List<ItemModel> equipDatas = new List<ItemModel>();
+                    equipDatas.Add(itemModel);
+                    m_DogzEquipDict.Add(dogzId, equipDatas);
+                }
+                else
+                {
+                    m_DogzEquipDict[dogzId].Add(itemModel);
+                }
+                
+            }
+        }
+
+        private void RefreshDogzEquipInfo(PackType type, int index, int id)
+        {
+            if (type != PackType.rptDogzEquip) return;
+
+            ItemModel itemModel = playerPack.GetItemModelByIndex(type, index);
+            int dogzId = GetDogzIDByIndex(index);
+            if (itemModel != null)
+            {
+                for (int i = 0; i < m_DogzEquipDict[dogzId].Count; i++)
+                {
+                    if (m_DogzEquipDict[dogzId][i].itemInfo.ItemPlace == index)
+                    {
+                        m_DogzEquipDict[dogzId][i] = itemModel;
+                        return;
+                    }
+                }
+            }
+            else
+            {
+                for (int i = 0; i < m_DogzEquipDict[dogzId].Count; i++)
+                {
+                    if (m_DogzEquipDict[dogzId][i].itemInfo.ItemPlace == index)
+                    {
+                        m_DogzEquipDict[dogzId].RemoveAt(i);
+                        return;
+                    }
+                }
+            }
+        }
+
         /// <summary>
         /// 鑾峰緱绁炲吔绌挎埓鐨勮澶囨暟鎹�
         /// </summary>
-        private Dictionary<int, List<DogzEquipData>> m_DogzEquipDict = new Dictionary<int, List<DogzEquipData>>();
-        public List<DogzEquipData> GetDogzEquips(int _dogzId)
+        private Dictionary<int, List<ItemModel>> m_DogzEquipDict = new Dictionary<int, List<ItemModel>>();
+        public List<ItemModel> GetDogzEquips(int _dogzId)
         {
-            List<DogzEquipData> _list = null;
+            List<ItemModel> _list = null;
             m_DogzEquipDict.TryGetValue(_dogzId,out _list);
             return _list;
+        }
+
+        public int GetDogzEquipPlaceByIndex(int index)
+        {
+            return (index % 5) + 101;
+        }
+
+        public int GetDogzIDByIndex(int index)
+        {
+            return (index / 5) + 1;
         }
 
         /// <summary>
@@ -156,25 +277,27 @@
         /// <param name="_index"></param>
         /// <param name="_equipData"></param>
         /// <returns></returns>
-        public bool TryGetDogzEquip(int _dogzId, int _index, out DogzEquipData _equipData)
+        public bool TryGetDogzEquip(int _dogzId, int _index, out ItemModel _equipData)
         {
-            _equipData = default(DogzEquipData);
-            List<DogzEquipData> _list = GetDogzEquips(_dogzId);
+            _equipData = null;
+            List<ItemModel> _list = GetDogzEquips(_dogzId);
             if (_list == null)
             {
                 return false;
             }
-            var index = _list.FindIndex((x) =>
+           
+            for(int i = 0; i < _list.Count; i++)
             {
-                return x.Index == _index;
-            });
-            if (index != -1)
-            {
-                _equipData = _list[index];
-                return true;
+                int index = (int)(_list[i].itemInfo.ItemPlace % 5);
+                if(index == _index)
+                {
+                    _equipData = _list[i];
+                    return true;
+                }
             }
             return false;
         }
+
         #endregion
 
         #region 瑁呭璇︾粏淇℃伅
@@ -184,12 +307,12 @@
 
         public void ViewDetail(int _itemId, bool compare = false)
         {
-            viewDetailData = new DogzEquipData(_itemId);
-            viewDetailCompare = compare;
-            if (!WindowCenter.Instance.CheckOpen<DogzDetailsWin>())
-            {
-                WindowCenter.Instance.Open<DogzDetailsWin>();
-            }
+            //viewDetailData = new DogzEquipData(_itemId);
+            //viewDetailCompare = compare;
+            //if (!WindowCenter.Instance.CheckOpen<DogzDetailsWin>())
+            //{
+            //    WindowCenter.Instance.Open<DogzDetailsWin>();
+            //}
         }
 
         public int DogzEquipScore(DogzEquipData data)

--
Gitblit v1.8.0