hch
1 天以前 87d5c46997d61523aed87fdb7ed0b07e9dded223
Main/System/HeroUI/HeroListWin.cs
@@ -17,10 +17,7 @@
    [SerializeField] Button attrOnTipBtn;
    [SerializeField] Button changeHeroPosBtn; //布阵按钮
    private List<Image> countrySelectImgList;
    private List<Image> jobSelectImgList;
    [SerializeField] HeroSelectBehaviour fiterManager;  //武将筛选
    SinglePack singlePack;
@@ -36,15 +33,23 @@
            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.RefreshItemEvent += RefreshPakCount;
        PackManager.Instance.gridRefreshEvent += GridRefreshEvent;
        PackManager.Instance.RefreshItemEvent += RefreshItemEvent;
        UIManager.Instance.OnCloseWindow += OnCloseWindow;
        HeroManager.Instance.onHeroDeleteEvent += HeroDeleteEvent;
        HeroUIManager.Instance.SortHeroList();
        CreateScroller();
        Refresh();
@@ -53,13 +58,50 @@
    protected override void OnPreClose()
    {
        heroListScroller.OnRefreshCell -= OnRefreshCell;
        PackManager.Instance.RefreshItemEvent -= RefreshPakCount;
        PackManager.Instance.RefreshItemEvent -= RefreshItemEvent;
        PackManager.Instance.gridRefreshEvent -= GridRefreshEvent;
        UIManager.Instance.OnCloseWindow -= OnCloseWindow;
        HeroManager.Instance.onHeroDeleteEvent -= HeroDeleteEvent;
    }
    private void OnCloseWindow(UIBase closeUI)
    {
        //其他武将功能产生数据变化,需要刷新武将列表
        if (closeUI is HeroTrainWin ||
            closeUI is HeroCallWin ||
            closeUI is HeroPosWin)
        {
            HeroUIManager.Instance.SortHeroList();
            CreateScroller();
            Refresh();
        }
    }
    public override void Refresh()
    {
        if (singlePack == null || singlePack.GetAllItems().Count <= 0)
        RefreshEmptyTip();
        OnBattleTeamAttrPer();
        RefreshPackCount();
        fiterManager.Display(0, HeroUIManager.Instance.selectHeroListJob, HeroUIManager.Instance.selectHeroListCountry, SelectJobCountry);
    }
    void HeroDeleteEvent(int heroID)
    {
        HeroUIManager.Instance.SortHeroList();
        heroListScroller.m_Scorller.RefreshActiveCellViews();
    }
    void RefreshEmptyTip()
    {
        if (HeroUIManager.Instance.heroSortList.Count <= 0)
        {
            heroListEmpty.SetActive(true);
            heroListScroller.SetActive(false);
@@ -69,10 +111,15 @@
            heroListEmpty.SetActive(false);
            heroListScroller.SetActive(true);
        }
    }
        OnBattleTeamAttrPer();
        RefreshPakCount(PackType.Hero, 0, 0);
    void SelectJobCountry(int job, int country)
    {
        HeroUIManager.Instance.selectHeroListJob = job;
        HeroUIManager.Instance.selectHeroListCountry = country;
        HeroUIManager.Instance.SortHeroList();
        RefreshEmptyTip();
        CreateScroller();
    }
    //上阵加成
@@ -92,7 +139,7 @@
                    valuePer += hero.GetOnBattleAddPer();
                }
            }
        }
        //上阵属性
        for (int i = 0; i < attrOnList.Count; i++)
@@ -120,18 +167,29 @@
        heroListScroller.Restart();
    }
    void RefreshPakCount(PackType type, int index, int itemID)
    void RefreshItemEvent(PackType type, int index, int itemID)
    {
        if (type != PackType.Hero)
            return;
        if (singlePack == null)
        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;
        int count = singlePack.GetAllItems().Count;
        heroPackText.text = UIHelper.AppendColor(count > singlePack.unlockedGridCount ? TextColType.Red : TextColType.NavyBrown,
                            string.Format("{0}/{1}", count, singlePack.unlockedGridCount));
        RefreshPackCount();
    }
}