using System.Collections; 
 | 
using System.Collections.Generic; 
 | 
using UnityEngine; 
 | 
using UnityEngine.UI; 
 | 
  
 | 
/// <summary> 
 | 
/// 武将列表 
 | 
/// </summary> 
 | 
public class HeroListWin : UIBase 
 | 
{ 
 | 
    [SerializeField] Button heroPackBtn; 
 | 
    [SerializeField] Text heroPackText; 
 | 
    [SerializeField] ScrollerController heroListScroller; 
 | 
    [SerializeField] GameObject heroListEmpty; 
 | 
    [SerializeField] List<Text> attrOnList; //上阵属性加成 
 | 
    [SerializeField] GameObject attrOnTip; 
 | 
    [SerializeField] Button attrOnTipBtn; 
 | 
  
 | 
    [SerializeField] Button changeHeroPosBtn; //布阵按钮 
 | 
    [SerializeField] HeroSelectBehaviour fiterManager;  //武将筛选 
 | 
  
 | 
    SinglePack singlePack; 
 | 
  
 | 
    /// </summary> 
 | 
    protected override void InitComponent() 
 | 
    { 
 | 
        heroPackBtn.AddListener(() => 
 | 
        { 
 | 
            HeroUIManager.Instance.QueryUnLockHeroPack(); 
 | 
        }); 
 | 
        changeHeroPosBtn.AddListener(() => 
 | 
        { 
 | 
            HeroUIManager.Instance.selectTeamType = TeamType.Story; 
 | 
            UIManager.Instance.OpenWindow<HeroPosWin>(); 
 | 
        }); 
 | 
        attrOnTipBtn.AddListener(() => 
 | 
        { 
 | 
            attrOnTip.SetActive(!attrOnTip.activeSelf); 
 | 
        }); 
 | 
    } 
 | 
  
 | 
  
 | 
    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; 
 | 
        HeroUIManager.Instance.SortHeroList(); 
 | 
        CreateScroller(); 
 | 
        Refresh(); 
 | 
    } 
 | 
  
 | 
    protected override void OnPreClose() 
 | 
    { 
 | 
        heroListScroller.OnRefreshCell -= OnRefreshCell; 
 | 
        PackManager.Instance.RefreshItemEvent -= RefreshItemEvent; 
 | 
        PackManager.Instance.gridRefreshEvent -= GridRefreshEvent; 
 | 
    } 
 | 
  
 | 
  
 | 
    public override void Refresh() 
 | 
    { 
 | 
        RefreshEmptyTip(); 
 | 
        OnBattleTeamAttrPer(); 
 | 
  
 | 
        RefreshPackCount(); 
 | 
  
 | 
        fiterManager.Display(0, HeroUIManager.Instance.selectHeroListJob, HeroUIManager.Instance.selectHeroListCountry, SelectJobCountry); 
 | 
  
 | 
    } 
 | 
  
 | 
    void RefreshEmptyTip() 
 | 
    { 
 | 
        if (HeroUIManager.Instance.heroSortList.Count <= 0) 
 | 
        { 
 | 
            heroListEmpty.SetActive(true); 
 | 
            heroListScroller.SetActive(false); 
 | 
        } 
 | 
        else 
 | 
        { 
 | 
            heroListEmpty.SetActive(false); 
 | 
            heroListScroller.SetActive(true); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    void SelectJobCountry(int job, int country) 
 | 
    { 
 | 
        HeroUIManager.Instance.selectHeroListJob = job; 
 | 
        HeroUIManager.Instance.selectHeroListCountry = country; 
 | 
        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(); 
 | 
                } 
 | 
            } 
 | 
  
 | 
        } 
 | 
        //上阵属性 
 | 
        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 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(); 
 | 
    } 
 | 
} 
 |