| | |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using UnityEngine; |
| | | using UnityEngine.UI; |
| | | |
| | |
| | | /// </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(); |
| | | } |
| | | |
| | | } |