hch
2025-08-05 7674f5aee893b74cc0d616b9c40467c8846f243c
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;
@@ -41,10 +38,12 @@
    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;
        HeroUIManager.Instance.SortHeroList();
        CreateScroller();
        Refresh();
@@ -53,13 +52,25 @@
    protected override void OnPreClose()
    {
        heroListScroller.OnRefreshCell -= OnRefreshCell;
        PackManager.Instance.RefreshItemEvent -= RefreshPakCount;
        PackManager.Instance.RefreshItemEvent -= RefreshItemEvent;
        PackManager.Instance.gridRefreshEvent -= GridRefreshEvent;
    }
    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 RefreshEmptyTip()
    {
        if (HeroUIManager.Instance.heroSortList.Count <= 0)
        {
            heroListEmpty.SetActive(true);
            heroListScroller.SetActive(false);
@@ -69,10 +80,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 +108,7 @@
                    valuePer += hero.GetOnBattleAddPer();
                }
            }
        }
        //上阵属性
        for (int i = 0; i < attrOnList.Count; i++)
@@ -120,18 +136,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)
            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();
    }
}