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