From 520e953a380e6cb94d4789fac7f539bb7fb61878 Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期二, 30 十二月 2025 20:24:01 +0800
Subject: [PATCH] 382 武将宿缘-客户端 总属性显示3行,可滚动
---
Main/System/HeroFates/HeroFatesAttrCell.cs | 43 ++++++++++++++
Main/System/HeroFates/HeroFatesManager.cs | 2
Main/System/HeroFates/HeroFatesWin.cs | 48 +++++++++------
Main/System/HeroFates/HeroFatesAttrCell.cs.meta | 11 +++
Main/System/HeroFates/HeroFatesAttrItem.cs | 11 +++
Main/System/HeroFates/HeroFatesAttrItem.cs.meta | 11 +++
6 files changed, 105 insertions(+), 21 deletions(-)
diff --git a/Main/System/HeroFates/HeroFatesAttrCell.cs b/Main/System/HeroFates/HeroFatesAttrCell.cs
new file mode 100644
index 0000000..6cfc2fb
--- /dev/null
+++ b/Main/System/HeroFates/HeroFatesAttrCell.cs
@@ -0,0 +1,43 @@
+using System.Collections.Generic;
+using UnityEngine;
+
+public class HeroFatesAttrCell : MonoBehaviour
+{
+ [SerializeField] HeroFatesAttrItem[] items;
+
+ HeroFatesManager manager { get { return HeroFatesManager.Instance; } }
+
+ public void Display(int rowIndex, List<int> totalAttrIdList, Dictionary<int, long> totalAttrDict)
+ {
+ if (totalAttrIdList.IsNullOrEmpty() || totalAttrDict.IsNullOrEmpty())
+ {
+ return;
+ }
+
+ for (int i = 0; i < items.Length; i++)
+ {
+ int index = rowIndex * manager.attrRowCountMax + i;
+ if (index < totalAttrIdList.Count)
+ {
+ if (index >= totalAttrIdList.Count || index < 0)
+ {
+ continue;
+ }
+ int attrId = totalAttrIdList[index];
+ if (!totalAttrDict.ContainsKey(attrId))
+ {
+ continue;
+ }
+ long attrValue = totalAttrDict[attrId];
+
+ items[i].SetActive(true);
+ items[i].Display(attrId, attrValue);
+ }
+ else
+ {
+ items[i].SetActive(false);
+ }
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/Main/System/HeroFates/HeroFatesAttrCell.cs.meta b/Main/System/HeroFates/HeroFatesAttrCell.cs.meta
new file mode 100644
index 0000000..4f820be
--- /dev/null
+++ b/Main/System/HeroFates/HeroFatesAttrCell.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: bfad3efe8ed965a468b3d10078e23014
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/HeroFates/HeroFatesAttrItem.cs b/Main/System/HeroFates/HeroFatesAttrItem.cs
new file mode 100644
index 0000000..18c7487
--- /dev/null
+++ b/Main/System/HeroFates/HeroFatesAttrItem.cs
@@ -0,0 +1,11 @@
+using System.Collections.Generic;
+using UnityEngine;
+
+public class HeroFatesAttrItem : MonoBehaviour
+{
+ [SerializeField] TextEx txtAttr;
+ public void Display(int attrID, long attrValue)
+ {
+ txtAttr.text = PlayerPropertyConfig.GetFullDescription(attrID, attrValue);
+ }
+}
\ No newline at end of file
diff --git a/Main/System/HeroFates/HeroFatesAttrItem.cs.meta b/Main/System/HeroFates/HeroFatesAttrItem.cs.meta
new file mode 100644
index 0000000..38b23d5
--- /dev/null
+++ b/Main/System/HeroFates/HeroFatesAttrItem.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 0c43efa49cf2f564a8acdc3ec0e57eea
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/HeroFates/HeroFatesManager.cs b/Main/System/HeroFates/HeroFatesManager.cs
index 0e9d832..a001ede 100644
--- a/Main/System/HeroFates/HeroFatesManager.cs
+++ b/Main/System/HeroFates/HeroFatesManager.cs
@@ -6,7 +6,7 @@
public class HeroFatesManager : GameSystemManager<HeroFatesManager>
{
public readonly int rowCountMax = 5;
-
+ public readonly int attrRowCountMax = 3;
public override void Init()
{
DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin += OnBeforePlayerDataInitializeEventOnRelogin;
diff --git a/Main/System/HeroFates/HeroFatesWin.cs b/Main/System/HeroFates/HeroFatesWin.cs
index 6a2e7d3..a8182a9 100644
--- a/Main/System/HeroFates/HeroFatesWin.cs
+++ b/Main/System/HeroFates/HeroFatesWin.cs
@@ -1,3 +1,4 @@
+using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
@@ -5,7 +6,7 @@
public class HeroFatesWin : UIBase
{
[SerializeField] ScrollerController scroller;
- [SerializeField] List<TextEx> attrs;
+ [SerializeField] ScrollerController attrScroller;
HeroFatesManager manager { get { return HeroFatesManager.Instance; } }
protected override void InitComponent()
{
@@ -15,6 +16,7 @@
protected override void OnPreOpen()
{
scroller.OnRefreshCell += OnRefreshCell;
+ attrScroller.OnRefreshCell += OnRefreshAttrCell;
manager.OnUpdateHeroFatesInfoEvent += OnUpdateHeroFatesInfo;
CreateScoller();
@@ -22,19 +24,26 @@
manager.HasShowRedDotFates(out firstIndex);
scroller.JumpIndex(firstIndex);
- DisplayAttrs();
+ CreateAttrScoller();
}
protected override void OnPreClose()
{
scroller.OnRefreshCell -= OnRefreshCell;
+ attrScroller.OnRefreshCell -= OnRefreshAttrCell;
manager.OnUpdateHeroFatesInfoEvent -= OnUpdateHeroFatesInfo;
+ }
+
+ private void OnRefreshAttrCell(ScrollerDataType type, CellView cell)
+ {
+ var _cell = cell.GetComponent<HeroFatesAttrCell>();
+ _cell?.Display(cell.index, totalAttrIdList, totalAttrDict);
}
private void OnUpdateHeroFatesInfo()
{
RefeshScoller();
- DisplayAttrs();
+ CreateAttrScoller();
}
List<int> fatesIDList = new List<int>();
private void OnRefreshCell(ScrollerDataType type, CellView cell)
@@ -62,29 +71,28 @@
scroller.m_Scorller.RefreshActiveCellViews();
}
- void DisplayAttrs()
+ List<int> totalAttrIdList = new List<int>();
+ Dictionary<int, long> totalAttrDict = new Dictionary<int, long>();
+ void CreateAttrScoller()
{
- Dictionary<int, long> totalAttrDict = manager.GetTotalAttr();
- if (attrs.IsNullOrEmpty() || totalAttrDict.IsNullOrEmpty())
+ totalAttrDict = manager.GetTotalAttr();
+ if (totalAttrDict.IsNullOrEmpty())
return;
- List<int> totalAttrIdList = totalAttrDict.Keys
- .OrderByDescending(attrID => totalAttrDict[attrID] > 0) // 灞炴�у��>0鐨勬帓鍓嶉潰
- .ThenBy(attrID => attrID) // 鐒跺悗鎸塧ttrID鍗囧簭
- .ToList();
- for (int i = 0; i < attrs.Count; i++)
+ totalAttrIdList = totalAttrDict.Keys
+ .OrderByDescending(attrID => totalAttrDict[attrID] > 0) // 灞炴�у��>0鐨勬帓鍓嶉潰
+ .ThenBy(attrID => attrID) // 鐒跺悗鎸塧ttrID鍗囧簭
+ .ToList();
+
+ attrScroller.Refresh();
+ if (!totalAttrIdList.IsNullOrEmpty())
{
- if (i < totalAttrDict.Count)
+ int rowCount = Mathf.CeilToInt((float)totalAttrIdList.Count / manager.attrRowCountMax);
+ for (int i = 0; i < rowCount; i++)
{
- int attrID = totalAttrIdList[i];
- long attrValue = totalAttrDict[attrID];
- attrs[i].text = PlayerPropertyConfig.GetFullDescription(attrID, attrValue);
- attrs[i].SetActive(true);
- }
- else
- {
- attrs[i].SetActive(false);
+ attrScroller.AddCell(ScrollerDataType.Header, i);
}
}
+ attrScroller.Restart();
}
}
\ No newline at end of file
--
Gitblit v1.8.0