From ff032a0d727eee13399e29391e1437bea912337c Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期六, 06 十二月 2025 16:42:46 +0800
Subject: [PATCH] 121 【武将】武将系统 - 生效武将版本,同步属性计算,更改新筛选模式

---
 Main/System/HeroUI/HeroListWin.cs |  118 +++++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 82 insertions(+), 36 deletions(-)

diff --git a/Main/System/HeroUI/HeroListWin.cs b/Main/System/HeroUI/HeroListWin.cs
index e956c8d..9b6bf0c 100644
--- a/Main/System/HeroUI/HeroListWin.cs
+++ b/Main/System/HeroUI/HeroListWin.cs
@@ -12,12 +12,13 @@
     [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;
 
@@ -37,23 +38,24 @@
         {
             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()
@@ -62,7 +64,7 @@
         PackManager.Instance.RefreshItemEvent -= RefreshItemEvent;
         PackManager.Instance.gridRefreshEvent -= GridRefreshEvent;
         UIManager.Instance.OnCloseWindow -= OnCloseWindow;
-        HeroManager.Instance.onHeroDeleteEvent -= HeroDeleteEvent;
+        // HeroManager.Instance.onHeroDeleteEvent -= HeroDeleteEvent;
         UIManager.Instance.OnOpenWindow -= OnOpenWindow;
     }
 
@@ -72,6 +74,7 @@
         //鍏朵粬姝﹀皢鍔熻兘浜х敓鏁版嵁鍙樺寲锛岄渶瑕佸埛鏂版灏嗗垪琛�
         if (closeUI is HeroTrainWin ||
             closeUI is HeroCallWin ||
+            closeUI is HeroDeleteWin ||
             closeUI is HeroPosWin)
         {
             HeroUIManager.Instance.SortHeroList();
@@ -117,15 +120,15 @@
 
         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();
+    // }
 
 
 
@@ -144,10 +147,10 @@
         }
     }
 
-    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();
@@ -156,23 +159,23 @@
     //涓婇樀鍔犳垚
     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));
@@ -181,23 +184,66 @@
 
     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)

--
Gitblit v1.8.0