| | |
| | | using UnityEngine; |
| | | using System.Collections; |
| | | using UnityEngine.UI; |
| | | using System.Collections.Generic;
|
| | | using System;
|
| | | //神兽强化右侧材料吸收列表 |
| | | namespace Snxxz.UI { |
| | | 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;
|
| | |
| | | [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()
|
| | |
| | | {
|
| | | m_ToggleAll.isOn = false;
|
| | | }
|
| | | GetGodBeastBag();//获取神兽背包数据排序
|
| | | FilterQuality();//分类筛选
|
| | | m_ScrollerController.OnRefreshCell += OnRefreshGridCell;
|
| | | OnCreateGridLineCell(m_ScrollerController);
|
| | |
|
| | |
| | | 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);
|
| | |
| | |
|
| | | 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)
|
| | | {
|
| | |
| | | {
|
| | | switch (Type)
|
| | | {
|
| | | case 1:
|
| | | case 0:
|
| | | m_Label.text = "强化水晶";
|
| | | break;
|
| | | case 2:
|
| | |
| | | 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);
|
| | | }
|
| | | });
|
| | |
|
| | | }
|
| | | }
|