From 04b3034c07f86aad4493f3be4bd26e2094c10d0c Mon Sep 17 00:00:00 2001
From: client_Zxw <826696702@qq.com>
Date: 星期一, 20 八月 2018 21:27:24 +0800
Subject: [PATCH] [2614]神兽开发

---
 System/Strengthening/GodBeastSlidingList.cs |  279 ++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 261 insertions(+), 18 deletions(-)

diff --git a/System/Strengthening/GodBeastSlidingList.cs b/System/Strengthening/GodBeastSlidingList.cs
index 54de49c..626336b 100644
--- a/System/Strengthening/GodBeastSlidingList.cs
+++ b/System/Strengthening/GodBeastSlidingList.cs
@@ -5,10 +5,26 @@
 using UnityEngine;
 using System.Collections;
 using UnityEngine.UI;
-//绁炲吔寮哄寲鍙充晶鏉愭枡鍚告敹鍒楄〃
-namespace Snxxz.UI {
+using System.Collections.Generic;
+using System;
+//绁炲吔寮哄寲鍙充晶鏉愭枡鍚告敹鍒楄〃
+namespace Snxxz.UI
+{
+    public class GodBeastBagClass
+    {
+        public int ItemId;//ID
+        public int Index;//涓嬫爣
+        public int IsEquipment;//鏄惁瑁呭0姘存櫠锛�1瑁呭
+        public int Color;//鍝佽川棰滆壊
+        public int Star;//鏄熺骇
+        public int LV;//绛夌骇
+        public int Proficiency;//鐔熺粌搴�
+        public int EquipScore;//瑁呭璇勫垎
+        public int Part;//瑁呭浣�
+    }
 
-    public class GodBeastSlidingList:MonoBehaviour {
+    public class GodBeastSlidingList : MonoBehaviour
+    {
         [SerializeField] ScrollerController m_ScrollerController;
 
         [SerializeField] Text m_Label;
@@ -23,27 +39,103 @@
         [SerializeField] Toggle m_ToggleAll;
         public int LINE = 10;
 
+        public static event Action<Dictionary<int, int>> AbsorbEvent;
+        private List<GodBeastBagClass> GodBeastBagList = new List<GodBeastBagClass>();
+        private List<int> DeleteIndexList = new List<int>();
+        private Dictionary<int, int> AbsorptionDic = new Dictionary<int, int>();
         private int Quality = 10;
+        PlayerPackModel _playerPack;
+        PlayerPackModel playerPack { get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PlayerPackModel>()); } }
         private void Start()
         {
             m_Arrow.AddListener(OnClickArrow);
-            m_ButtonAll.AddListener(()=>{ OnClickSwith(10); });
-            m_ButtonCrystal.AddListener(() => { OnClickSwith(1);});
-            m_ButtonBlue.AddListener(() => { OnClickSwith(2); });
-            m_ButtonPurple.AddListener(() => { OnClickSwith(3); });
-            m_ButtonOrange.AddListener(() => { OnClickSwith(4); });
+            m_ButtonAll.AddListener(() =>
+            {
+                OnClickSwith(10);
+                if (m_ToggleAll.isOn)
+                {
+                    m_ToggleAll.isOn = false;
+                }
+                GetGodBeastBag();
+                FilterQuality();
+                m_ScrollerController.m_Scorller.RefreshActiveCellViews();//鍒锋柊鍙
+                if (AbsorbEvent != null)
+                {
+                    AbsorbEvent(AbsorptionDic);
+                }
+            });
+            m_ButtonCrystal.AddListener(() =>
+            {
+                OnClickSwith(0);
+                if (m_ToggleAll.isOn)
+                {
+                    m_ToggleAll.isOn = false;
+                }
+                GetGodBeastBag();
+                FilterQuality();
+                m_ScrollerController.m_Scorller.RefreshActiveCellViews();//鍒锋柊鍙
+                if (AbsorbEvent != null)
+                {
+                    AbsorbEvent(AbsorptionDic);
+                }
+            });
+            m_ButtonBlue.AddListener(() =>
+            {
+                OnClickSwith(2);
+                if (m_ToggleAll.isOn)
+                {
+                    m_ToggleAll.isOn = false;
+                }
+                GetGodBeastBag();
+                FilterQuality();
+                m_ScrollerController.m_Scorller.RefreshActiveCellViews();//鍒锋柊鍙
+                if (AbsorbEvent != null)
+                {
+                    AbsorbEvent(AbsorptionDic);
+                }
+            });
+            m_ButtonPurple.AddListener(() =>
+            {
+                OnClickSwith(3);
+                if (m_ToggleAll.isOn)
+                {
+                    m_ToggleAll.isOn = false;
+                }
+                GetGodBeastBag();
+                FilterQuality();
+                m_ScrollerController.m_Scorller.RefreshActiveCellViews();//鍒锋柊鍙
+                if (AbsorbEvent != null)
+                {
+                    AbsorbEvent(AbsorptionDic);
+                }
+            });
+            m_ButtonOrange.AddListener(() =>
+            {
+                OnClickSwith(4);
+                if (m_ToggleAll.isOn)
+                {
+                    m_ToggleAll.isOn = false;
+                }
+                GetGodBeastBag();
+                FilterQuality();
+                m_ScrollerController.m_Scorller.RefreshActiveCellViews();//鍒锋柊鍙
+                if (AbsorbEvent != null)
+                {
+                    AbsorbEvent(AbsorptionDic);
+                }
+            });
             m_ToggleAll.onValueChanged.AddListener(OnClickToggle);
         }
         private void OnEnable()
         {
-            
+
         }
         private void OnDisable()
         {
-            
+
         }
 
-        public void  Init()
+        public void Init()
         {
             Quality = 10;
             ContentSelect(Quality);
@@ -55,6 +147,8 @@
             {
                 m_ToggleAll.isOn = false;
             }
+            GetGodBeastBag();//鑾峰彇绁炲吔鑳屽寘鏁版嵁鎺掑簭
+            FilterQuality();//鍒嗙被绛涢��
             m_ScrollerController.OnRefreshCell += OnRefreshGridCell;
             OnCreateGridLineCell(m_ScrollerController);
 
@@ -65,6 +159,114 @@
             m_ScrollerController.OnRefreshCell -= OnRefreshGridCell;
         }
 
+        private void GetGodBeastBag()//鑾峰彇绁炲吔鑳屽寘鏁版嵁鎺掑簭
+        {
+            GodBeastBagList.Clear();
+            if (playerPack.GetSinglePackModel(PackType.rptDogzItem) == null)
+            {
+                return;
+            }
+            Dictionary<int, ItemModel> BackpackDic = playerPack.GetSinglePackModel(PackType.rptDogzItem).GetPackModelIndexDict();
+            foreach (var key in BackpackDic.Keys)
+            {
+                var itemModel = BackpackDic[key];
+                GodBeastBagClass godBeastBagClass = new GodBeastBagClass();
+                godBeastBagClass.ItemId = itemModel.itemId;
+                godBeastBagClass.Index = key;
+                if (itemModel.chinItemModel.Type != 70)
+                {
+                    godBeastBagClass.IsEquipment = 1;
+                }
+                else
+                {
+                    godBeastBagClass.IsEquipment = 0;
+                }
+                godBeastBagClass.Color = itemModel.chinItemModel.ItemColor;
+                godBeastBagClass.Star = itemModel.chinItemModel.StarLevel;
+                godBeastBagClass.EquipScore = itemModel.equipScore;
+                godBeastBagClass.Part = itemModel.EquipPlace;
+                var IudetDogzEquipPlus = itemModel.GetUseDataModel((int)ItemUseDataKey.Def_IudetDogzEquipPlus);// 绁炲吔瑁呭寮哄寲淇℃伅鍒楄〃 [寮哄寲绛夌骇, 寮哄寲鐔熺粌搴
+                if (IudetDogzEquipPlus == null)
+                {
+                    godBeastBagClass.LV = 0;
+                    godBeastBagClass.Proficiency = 0;
+                   
+                }
+                else
+                {
+                    godBeastBagClass.LV = IudetDogzEquipPlus[0];
+                    godBeastBagClass.Proficiency = IudetDogzEquipPlus[1];
+                }
+               
+                GodBeastBagList.Add(godBeastBagClass);
+            }
+            GodBeastBagList.Sort(Compare);
+        }
+        int Compare(GodBeastBagClass x, GodBeastBagClass y)
+        {
+            if (x.IsEquipment.CompareTo(y.IsEquipment) != 0)//鏄惁寮哄寲姘存櫠
+            {
+                return x.IsEquipment.CompareTo(y.IsEquipment);
+            }
+            if (x.Proficiency.CompareTo(y.Proficiency) != 0)//寮哄寲鐔熺粌搴�
+            {
+                return -x.Proficiency.CompareTo(y.Proficiency);
+            }
+            if (x.Color.CompareTo(y.Color) != 0)//鍝佽川
+            {
+                return -x.Color.CompareTo(y.Color);
+            }
+            if (x.Star.CompareTo(y.Star) != 0)//鏄熺骇
+            {
+                return -x.Star.CompareTo(y.Star);
+            }
+            if (x.Part.CompareTo(y.Part) != 0)//瑁呭浣�
+            {
+                return x.Part.CompareTo(y.Part);
+            }
+            if (x.EquipScore.CompareTo(y.EquipScore) != 0)//瑁呭璇勫垎
+            {
+                return x.EquipScore.CompareTo(y.EquipScore);
+            }
+            return 1;
+        }
+
+        private void FilterQuality()//鍒嗙被绛涢��
+        {
+            DeleteIndexList.Clear();
+            AbsorptionDic.Clear();
+            for (int i = 0; i < GodBeastBagList.Count; i++)
+            {
+                if (Quality > 0)//鍙湁姘存櫠
+                {
+                    if (GodBeastBagList[i].IsEquipment != 0)
+                    {
+                        int type = i;
+                        DeleteIndexList.Add(type);
+                    }
+                }
+                else
+                {
+                    if (Quality < 10 && (GodBeastBagList[i].IsEquipment == 1 || GodBeastBagList[i].Color > Quality))//杩囨护鎺夊彧鍓╂墍閫夊搧璐ㄨ澶�
+                    {
+                        int type = i;
+                        DeleteIndexList.Add(type);
+                    }
+                }
+            }
+            for (int j = 0; j < DeleteIndexList.Count; j++)
+            {
+                GodBeastBagList.RemoveAt(DeleteIndexList[j]);
+            }
+            if (m_ToggleAll.isOn)
+            {
+                for (int k = 0; k < GodBeastBagList.Count; k++)
+                {
+                    AbsorptionDic.Add(GodBeastBagList[k].Index, 1);
+                }
+            }
+        }
+
         private void OnClickArrow()
         {
             m_ScrollViewFirst.SetActive(!m_ScrollViewFirst.activeSelf);
@@ -72,7 +274,24 @@
 
         private void OnClickToggle(bool IsBool)
         {
+            if (IsBool)
+            {
 
+            }
+            else
+            {
+                if (AbsorptionDic.Count != 0)
+                {
+                    AbsorptionDic.Clear();
+                }
+            }
+            GetGodBeastBag();
+            FilterQuality();
+            m_ScrollerController.m_Scorller.RefreshActiveCellViews();//鍒锋柊鍙
+            if (AbsorbEvent != null)
+            {
+                AbsorbEvent(AbsorptionDic);
+            }
         }
         private void OnClickSwith(int Type)
         {
@@ -87,7 +306,7 @@
         {
             switch (Type)
             {
-                case 1:
+                case 0:
                     m_Label.text = "寮哄寲姘存櫠";
                     break;
                 case 2:
@@ -123,14 +342,38 @@
             int childCode = 0;
             for (childCode = 0; childCode < cell.transform.childCount; childCode++)
             {
-                ChildNodes _ChildNodes = cell.transform.GetChild(childCode).GetComponent<ChildNodes>();
-                _ChildNodes._ItemIcon.SetActive(false);
-                _ChildNodes._Elect.SetActive(false);
+                GodBeastChildNodes GodBeastChildNodes = cell.transform.GetChild(childCode).GetComponent<GodBeastChildNodes>();
+                GodBeastChildNodes.ItemCell.gameObject.SetActive(false);
+                GodBeastChildNodes.ChoosenImg.SetActive(false);
+                GodBeastChildNodes.TextNumber.gameObject.SetActive(false);
                 int cellCount = (cell.transform.childCount) * gridlineIndex + (childCode + 1);
-                if (cellCount - 1 < 1)
+                GodBeastChildNodes.ButtonDown.RemoveAllListeners();
+                if (cellCount - 1 < GodBeastBagList.Count)
                 {
-
-
+                    int index = cellCount - 1;
+                    GodBeastChildNodes.ItemCell.gameObject.SetActive(true);
+                    GodBeastBagClass godBeastBagClass = GodBeastBagList[index];
+                    if (AbsorptionDic.ContainsKey(godBeastBagClass.Index))
+                    {
+                        GodBeastChildNodes.ChoosenImg.SetActive(true);
+                    }
+                    GodBeastChildNodes.ButtonDown.AddListener(() =>
+                    {
+                        if (AbsorptionDic.ContainsKey(godBeastBagClass.Index))
+                        {
+                            AbsorptionDic.Remove(godBeastBagClass.Index);
+                        }
+                        else
+                        {
+                            AbsorptionDic.Add(godBeastBagClass.Index,1);
+                        }
+                        m_ScrollerController.m_Scorller.RefreshActiveCellViews();//鍒锋柊鍙
+                        if (AbsorbEvent != null)
+                        {
+                            AbsorbEvent(AbsorptionDic);
+                        }
+                    });
+                    
                 }
             }
         }

--
Gitblit v1.8.0