| | |
| | | [SerializeField] Text heroPackText; |
| | | [SerializeField] ScrollerController heroListScroller; |
| | | [SerializeField] GameObject heroListEmpty; |
| | | [SerializeField] List<Text> attrOnList; //上阵属性加成 |
| | | [SerializeField] List<Text> attrOnList; //全体属性加成 |
| | | [SerializeField] GameObject attrOnTip; |
| | | [SerializeField] Button attrOnTipBtn; |
| | | |
| | | [SerializeField] Button changeHeroPosBtn; //布阵按钮 |
| | | [SerializeField] HeroSelectBehaviour fiterManager; //武将筛选 |
| | | [SerializeField] Transform heroSelectBehaviour; |
| | | HeroSelectBehaviour fiterManager; //武将筛选 |
| | | |
| | | SinglePack singlePack; |
| | | |
| | |
| | | { |
| | | attrOnTip.SetActive(!attrOnTip.activeSelf); |
| | | }); |
| | | |
| | | fiterManager = HeroSelectBehaviour.Create(heroSelectBehaviour); |
| | | } |
| | | |
| | | |
| | | protected override void OnPreOpen() |
| | | { |
| | | HeroUIManager.Instance.selectHeroListJob = 0; |
| | | HeroUIManager.Instance.selectHeroListCountry = 0; |
| | | singlePack = PackManager.Instance.GetSinglePack(PackType.Hero); |
| | | heroListScroller.OnRefreshCell += OnRefreshCell; |
| | | PackManager.Instance.gridRefreshEvent += GridRefreshEvent; |
| | | PackManager.Instance.RefreshItemEvent += RefreshItemEvent; |
| | | UIManager.Instance.OnCloseWindow += OnCloseWindow; |
| | | HeroManager.Instance.onHeroDeleteEvent += HeroDeleteEvent; |
| | | // HeroManager.Instance.onHeroDeleteEvent += HeroDeleteEvent; |
| | | HeroUIManager.Instance.SortHeroList(); |
| | | UIManager.Instance.OnOpenWindow += OnOpenWindow; |
| | | CreateScroller(); |
| | | // CreateScroller(); |
| | | Refresh(); |
| | | fiterManager.Display(0, SelectJobCountry); |
| | | } |
| | | |
| | | protected override void OnPreClose() |
| | |
| | | PackManager.Instance.RefreshItemEvent -= RefreshItemEvent; |
| | | PackManager.Instance.gridRefreshEvent -= GridRefreshEvent; |
| | | UIManager.Instance.OnCloseWindow -= OnCloseWindow; |
| | | HeroManager.Instance.onHeroDeleteEvent -= HeroDeleteEvent; |
| | | // HeroManager.Instance.onHeroDeleteEvent -= HeroDeleteEvent; |
| | | UIManager.Instance.OnOpenWindow -= OnOpenWindow; |
| | | } |
| | | |
| | |
| | | //其他武将功能产生数据变化,需要刷新武将列表 |
| | | if (closeUI is HeroTrainWin || |
| | | closeUI is HeroCallWin || |
| | | closeUI is HeroDeleteWin || |
| | | closeUI is HeroPosWin) |
| | | { |
| | | HeroUIManager.Instance.SortHeroList(); |
| | |
| | | |
| | | RefreshPackCount(); |
| | | |
| | | fiterManager.Display(0, HeroUIManager.Instance.selectHeroListJob, HeroUIManager.Instance.selectHeroListCountry, SelectJobCountry); |
| | | |
| | | |
| | | } |
| | | |
| | | void HeroDeleteEvent(int heroID) |
| | | { |
| | | HeroUIManager.Instance.SortHeroList(); |
| | | heroListScroller.m_Scorller.RefreshActiveCellViews(); |
| | | } |
| | | // void HeroDeleteEvent(int heroID) |
| | | // { |
| | | // HeroUIManager.Instance.SortHeroList(); |
| | | // heroListScroller.m_Scorller.RefreshActiveCellViews(); |
| | | // } |
| | | |
| | | |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | void SelectJobCountry(int job, int country) |
| | | /// 回调参数: 职业,国家,伤害类型,6大战斗属性,特殊属性 |
| | | void SelectJobCountry(List<int> selects) |
| | | { |
| | | HeroUIManager.Instance.selectHeroListJob = job; |
| | | HeroUIManager.Instance.selectHeroListCountry = country; |
| | | HeroUIManager.Instance.selectHeroList = selects; |
| | | HeroUIManager.Instance.SortHeroList(); |
| | | RefreshEmptyTip(); |
| | | CreateScroller(); |
| | |
| | | //上阵加成 |
| | | void OnBattleTeamAttrPer() |
| | | { |
| | | var valuePer = 0; |
| | | var team = TeamManager.Instance.GetTeam(TeamType.Story); |
| | | if (team != null) |
| | | { |
| | | for (int i = 0; i < team.serverHeroes.Length; i++) |
| | | { |
| | | if (team.serverHeroes[i] == null) |
| | | continue; |
| | | var hero = HeroManager.Instance.GetHero(team.serverHeroes[i].guid); |
| | | if (hero != null) |
| | | { |
| | | valuePer += hero.GetOnBattleAddPer(); |
| | | } |
| | | } |
| | | var valuePer = HeroUIManager.Instance.GetAllHeroPer(); |
| | | // var team = TeamManager.Instance.GetTeam(TeamType.Story); |
| | | // if (team != null) |
| | | // { |
| | | // for (int i = 0; i < team.serverHeroes.Length; i++) |
| | | // { |
| | | // if (team.serverHeroes[i] == null) |
| | | // continue; |
| | | // var hero = HeroManager.Instance.GetHero(team.serverHeroes[i].guid); |
| | | // if (hero != null) |
| | | // { |
| | | // valuePer += hero.GetAddPer(); |
| | | // } |
| | | // } |
| | | |
| | | } |
| | | //上阵属性 |
| | | // } |
| | | //全体属性 |
| | | 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); |
| | | if (type == ScrollerDataType.Header) |
| | | { |
| | | var _cell1 = cell as HeroCardLineTipCell; |
| | | _cell1.Display(cell.index); |
| | | } |
| | | else |
| | | { |
| | | var _cell = cell as HeroCardLineCell; |
| | | _cell.Display(cell.index, activeCount); |
| | | } |
| | | } |
| | | |
| | | |
| | | int activeCount; |
| | | void CreateScroller() |
| | | { |
| | | heroListScroller.Refresh(); |
| | | for (int i = 0; i < HeroUIManager.Instance.heroSortList.Count; i++) |
| | | heroListScroller.AddCell(ScrollerDataType.Header, 0); |
| | | activeCount = GetAttrActiveHeroCount(); |
| | | for (int i = 0; i < activeCount; i++) |
| | | { |
| | | if (i % 4 == 0) |
| | | { |
| | | heroListScroller.AddCell(ScrollerDataType.Header, i); |
| | | heroListScroller.AddCell(ScrollerDataType.Normal, i); |
| | | } |
| | | } |
| | | heroListScroller.AddCell(ScrollerDataType.Header, 1); |
| | | var unActiveCount = HeroUIManager.Instance.heroSortList.Count - activeCount; |
| | | for (int i = 0; i < unActiveCount; i++) |
| | | { |
| | | if (i % 4 == 0) |
| | | { |
| | | //加10000 表示未生效 |
| | | heroListScroller.AddCell(ScrollerDataType.Normal, 10000 + activeCount + i); |
| | | } |
| | | } |
| | | heroListScroller.Restart(); |
| | | } |
| | | |
| | | int GetAttrActiveHeroCount() |
| | | { |
| | | int count = 0; |
| | | for (int i = 0; i < HeroUIManager.Instance.heroSortList.Count; i++) |
| | | { |
| | | var hero = HeroManager.Instance.GetHero(HeroUIManager.Instance.heroSortList[i]); |
| | | if (hero == null) |
| | | continue; |
| | | if (hero.isAttrActive) |
| | | { |
| | | count++; |
| | | } |
| | | else |
| | | { |
| | | break; |
| | | } |
| | | } |
| | | return count; |
| | | } |
| | | |
| | | |
| | | void RefreshItemEvent(PackType type, int index, int itemID) |
| | | { |
| | | if (type != PackType.Hero) |