| using System.Collections.Generic; | 
| using System.Linq; | 
| using UnityEngine; | 
| using UnityEngine.UI; | 
|   | 
|   | 
| /// <summary> | 
| /// 武将图鉴界面 | 
| /// </summary> | 
| public class HeroCollectionWin : UIBase | 
| { | 
|     [SerializeField] Button heroPackBtn; | 
|     [SerializeField] Text heroPackText; | 
|     [SerializeField] ScrollerController heroListScroller; | 
|     [SerializeField] List<Text> totalAttrList; | 
|     [SerializeField] Button attrBtn; | 
|     [SerializeField] HeroSelectBehaviour fiterManager;  //武将筛选 | 
|   | 
|     SinglePack singlePack; | 
|   | 
|     protected override void InitComponent() | 
|     { | 
|         attrBtn.AddListener(() => | 
|         { | 
|             SmallTipWin.worldPos = CameraManager.uiCamera.ScreenToWorldPoint(Input.mousePosition); | 
|             SmallTipWin.showText = Language.Get("herocard6"); | 
|             UIManager.Instance.OpenWindow<SmallTipWin>(); | 
|         }); | 
|   | 
|         heroPackBtn.AddListener(() => | 
|         { | 
|             HeroUIManager.Instance.QueryUnLockHeroPack(); | 
|         }); | 
|     } | 
|   | 
|     protected override void OnPreOpen() | 
|     { | 
|         singlePack = PackManager.Instance.GetSinglePack(PackType.Hero); | 
|         PackManager.Instance.gridRefreshEvent += GridRefreshEvent; | 
|         PackManager.Instance.RefreshItemEvent += RefreshItemEvent; | 
|         HeroUIManager.Instance.OnHeroCollectEvent += OnHeroCollectEvent; | 
|         heroListScroller.OnRefreshCell += OnRefreshCell; | 
|         HeroUIManager.Instance.selectHeroCollectListJob = 0; | 
|         HeroUIManager.Instance.selectHeroCollectListCountry = 0; | 
|         HeroUIManager.Instance.SortHeroCollectList(); | 
|         Display(); | 
|     } | 
|   | 
|     protected override void OnPreClose() | 
|     { | 
|   | 
|         PackManager.Instance.gridRefreshEvent -= GridRefreshEvent; | 
|         PackManager.Instance.RefreshItemEvent -= RefreshItemEvent; | 
|         HeroUIManager.Instance.OnHeroCollectEvent -= OnHeroCollectEvent; | 
|         heroListScroller.OnRefreshCell -= OnRefreshCell; | 
|     } | 
|   | 
|   | 
|     void Display() | 
|     { | 
|         fiterManager.Display(0, HeroUIManager.Instance.selectHeroCollectListJob, HeroUIManager.Instance.selectHeroCollectListCountry, SelectJobCountry); | 
|          | 
|         CreateScroller(); | 
|         RefreshTotalAttr(); | 
|         RefreshPackCount(); | 
|     } | 
|   | 
|   | 
|     void RefreshItemEvent(PackType type, int index, int itemID) | 
|     { | 
|         if (type != PackType.Hero) | 
|             return; | 
|   | 
|   | 
|         RefreshPackCount(); | 
|   | 
|     } | 
|   | 
|     void RefreshPackCount() | 
|     { | 
|         int count = singlePack.GetAllItems().Count; | 
|         heroPackText.text = UIHelper.AppendColor(count >= singlePack.unlockedGridCount ? TextColType.Red : TextColType.NavyBrown, | 
|                             string.Format("{0}/{1}", count, singlePack.unlockedGridCount)); | 
|   | 
|     } | 
|   | 
|     void GridRefreshEvent(PackType type) | 
|     { | 
|         if (type != PackType.Hero) | 
|             return; | 
|   | 
|         RefreshPackCount(); | 
|     } | 
|   | 
|   | 
|     void RefreshTotalAttr() | 
|     { | 
|         for (int i = 0; i < totalAttrList.Count; i++) | 
|         { | 
|             totalAttrList[i].text = PlayerPropertyConfig.GetFullDescription(PlayerPropertyConfig.basePerAttrs[i], | 
|             HeroUIManager.Instance.allHeroBookPer); | 
|         } | 
|     } | 
|   | 
|   | 
|     void SelectJobCountry(int job, int country) | 
|     { | 
|         HeroUIManager.Instance.selectHeroCollectListJob = job; | 
|         HeroUIManager.Instance.selectHeroCollectListCountry = country; | 
|         HeroUIManager.Instance.SortHeroCollectList(); | 
|         CreateScroller(); | 
|     } | 
|   | 
|   | 
|     void CreateScroller() | 
|     { | 
|         heroListScroller.Refresh(); | 
|         var _List = HeroUIManager.Instance.heroCollectDict.Keys.ToList(); | 
|         _List.Reverse(); | 
|         for (int i = 0; i < _List.Count; i++) | 
|         { | 
|             var ids = HeroUIManager.Instance.heroCollectDict[_List[i]]; | 
|             if (ids.Count == 0) | 
|                 continue; | 
|             //品质 | 
|             heroListScroller.AddCell(ScrollerDataType.Header, _List[i]); | 
|             //武将 | 
|             for (int j = 0; j < ids.Count; j++) | 
|             { | 
|                 if (j % 4 == 0) | 
|                 {  | 
|                     CellInfo cellInfo = new CellInfo(); | 
|                     cellInfo.infoInt1 = _List[i]; | 
|                     heroListScroller.AddCell(ScrollerDataType.Normal, j, cellInfo); | 
|                 } | 
|             } | 
|         } | 
|         heroListScroller.Restart(); | 
|     } | 
|   | 
|   | 
|     void OnRefreshCell(ScrollerDataType type, CellView cell) | 
|     { | 
|         if (type == ScrollerDataType.Header) | 
|         { | 
|             var _cell = cell.GetComponent<Image>(); | 
|             _cell.SetSprite("herocoltitle" + cell.index); | 
|         } | 
|         else if (type == ScrollerDataType.Normal) | 
|         { | 
|             var _cell = cell as HeroCollectionLineCell; | 
|             _cell?.Display(cell.index, cell.info.Value.infoInt1); | 
|   | 
|         } | 
|     } | 
|   | 
|     void OnHeroCollectEvent() | 
|     { | 
|         RefreshTotalAttr(); | 
|         heroListScroller.m_Scorller.RefreshActiveCellViews(); | 
|     } | 
|   | 
| } |