using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; /// /// 武将列表 /// public class HeroListWin : UIBase { [SerializeField] Button heroPackBtn; [SerializeField] Text heroPackText; [SerializeField] ScrollerController heroListScroller; [SerializeField] GameObject heroListEmpty; [SerializeField] List attrOnList; //上阵属性加成 [SerializeField] GameObject attrOnTip; [SerializeField] Button attrOnTipBtn; [SerializeField] Button changeHeroPosBtn; //布阵按钮 private List countrySelectImgList; private List jobSelectImgList; SinglePack singlePack; /// protected override void InitComponent() { heroPackBtn.AddListener(() => { HeroUIManager.Instance.QueryUnLockHeroPack(); }); changeHeroPosBtn.AddListener(() => { HeroUIManager.Instance.selectTeamType = TeamType.Story; UIManager.Instance.OpenWindow(); }); } protected override void OnPreOpen() { singlePack = PackManager.Instance.GetSinglePack(PackType.Hero); heroListScroller.OnRefreshCell += OnRefreshCell; //需要考虑调整为武将的事件,而不是背包 PackManager.Instance.RefreshItemEvent += RefreshPakCount; HeroUIManager.Instance.SortHeroList(); CreateScroller(); Refresh(); } protected override void OnPreClose() { heroListScroller.OnRefreshCell -= OnRefreshCell; PackManager.Instance.RefreshItemEvent -= RefreshPakCount; } public override void Refresh() { if (singlePack == null || singlePack.GetAllItems().Count <= 0) { heroListEmpty.SetActive(true); heroListScroller.SetActive(false); } else { heroListEmpty.SetActive(false); heroListScroller.SetActive(true); } OnBattleTeamAttrPer(); RefreshPakCount(PackType.Hero, 0, 0); } //上阵加成 void OnBattleTeamAttrPer() { var valuePer = 0; var team = TeamManager.Instance.GetTeam(TeamType.Story); if (team != null) { for (int i = 0; i < team.serverData.Length; i++) { var hero = HeroManager.Instance.GetHero(team.serverData[i].guid); if (hero != null) { valuePer += hero.GetOnBattleAddPer(); } } } //上阵属性 for (int i = 0; i < attrOnList.Count; i++) { attrOnList[i].text = PlayerPropertyConfig.GetFullDescription(new Int2(PlayerPropertyConfig.basePerAttrs[i], valuePer)); } } void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell as HeroCardLineCell; _cell.Display(cell.index); } void CreateScroller() { heroListScroller.Refresh(); for (int i = 0; i < HeroUIManager.Instance.heroSortList.Count; i++) { if (i % 4 == 0) { heroListScroller.AddCell(ScrollerDataType.Header, i); } } heroListScroller.Restart(); } void RefreshPakCount(PackType type, int index, int itemID) { if (type != PackType.Hero) return; if (singlePack == null) return; int count = singlePack.GetAllItems().Count; heroPackText.text = UIHelper.AppendColor(count > singlePack.unlockedGridCount ? TextColType.Red : TextColType.NavyBrown, string.Format("{0}/{1}", count, singlePack.unlockedGridCount)); } }