summaryrefslogtreecommitdiff
path: root/Client/Assets/Scripts/UICommon/XUIWrapContent.cs
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-01-25 14:28:30 +0800
committerchai <chaifix@163.com>2021-01-25 14:28:30 +0800
commit6eb915c129fc90c6f4c82ae097dd6ffad5239efc (patch)
tree7dd2be50edf41f36b60fac84696e731c13afe617 /Client/Assets/Scripts/UICommon/XUIWrapContent.cs
+scripts
Diffstat (limited to 'Client/Assets/Scripts/UICommon/XUIWrapContent.cs')
-rw-r--r--Client/Assets/Scripts/UICommon/XUIWrapContent.cs201
1 files changed, 201 insertions, 0 deletions
diff --git a/Client/Assets/Scripts/UICommon/XUIWrapContent.cs b/Client/Assets/Scripts/UICommon/XUIWrapContent.cs
new file mode 100644
index 00000000..d167a64b
--- /dev/null
+++ b/Client/Assets/Scripts/UICommon/XUIWrapContent.cs
@@ -0,0 +1,201 @@
+using System.Collections.Generic;
+using UILib;
+using UnityEngine;
+using XUtliPoolLib;
+
+public class XUIWrapContent : XUIObject, IXUIWrapContent
+{
+
+ protected override void OnAwake()
+ {
+ base.OnAwake();
+ m_uiWrapContent = GetComponent<UIWrapContent>();
+ if (null == m_uiWrapContent)
+ {
+ Debug.LogError("null == m_uiWrapContent");
+ }
+
+ m_uiWrapContent.updateHandler = OnItemUpdate;
+
+ if (Tpl == null)
+ {
+ Debug.LogError("Tpl == null");
+ }
+
+ if (!m_uiWrapContent.Init())
+ {
+ Debug.LogError("m_uiWrapContent.Init Failed");
+ }
+ }
+
+ protected override void OnStart()
+ {
+ base.OnStart();
+
+ if (!m_ItemPool.IsValid)
+ m_ItemPool.SetupPool(this.gameObject, Tpl, (uint)maxItemCount, false);
+ }
+
+ public bool enableBounds
+ {
+ get
+ {
+ return m_uiWrapContent.bBounds;
+ }
+ set
+ {
+ m_uiWrapContent.bBounds = value;
+ }
+ }
+
+ public Vector2 itemSize
+ {
+ get
+ {
+ return m_uiWrapContent.itemSize;
+ }
+ set
+ {
+ m_uiWrapContent.itemSize = value;
+ }
+ }
+
+ public int widthDimension
+ {
+ get
+ {
+ return m_uiWrapContent.WidthDimension;
+ }
+ set
+ {
+ m_uiWrapContent.WidthDimension = value;
+ }
+ }
+
+ public int heightDimensionMax
+ {
+ get
+ {
+ return m_uiWrapContent.HeightDimemsionMax;
+ }
+ }
+ public int maxItemCount
+ {
+ get
+ {
+ return (m_uiWrapContent.HeightDimemsionMax + 2) * m_uiWrapContent.WidthDimension;
+ }
+ }
+
+ //public void SetBounds(int lowerBound, int upperBound)
+ //{
+ // m_uiWrapContent.lowerBound = lowerBound;
+ // m_uiWrapContent.upperBound = upperBound;
+ // m_uiWrapContent.bBounds = true;
+ // m_uiWrapContent.AdjustContent();
+ //}
+
+ protected void _InitContent(int count, bool fadeIn = false)
+ {
+ int goCount = Mathf.Min(count, maxItemCount);
+
+ if(!m_ItemPool.IsValid)
+ m_ItemPool.SetupPool(this.gameObject, Tpl, (uint)maxItemCount, false);
+
+ if (fadeIn || goCount != m_ItemPool.ActiveCount)
+ {
+ BetterList<Transform> itemList = m_uiWrapContent.ItemList;
+ itemList.Clear();
+ if (fadeIn)
+ m_ItemPool.ReturnAll();
+ else
+ m_ItemPool.FakeReturnAll();
+ for (int i = 0; i < goCount; ++i)
+ {
+ GameObject go = m_ItemPool.FetchGameObject(fadeIn);
+ itemList.Add(go.transform);
+ OnItemInit(go.transform, i);
+ }
+ if(!fadeIn)
+ m_ItemPool.ActualReturnAll();
+
+ m_uiWrapContent.SetChildPositionOffset(0);
+ }
+ }
+
+ private int _GetRowCount(int count, int columnCount)
+ {
+ if (count <= 0)
+ return 0;
+ return ((count - 1) / columnCount + 1);
+ }
+
+ public void SetContentCount(int num, bool fadeIn = false)
+ {
+ if (m_uiWrapContent.WidthDimension != 1)
+ {
+ num = _GetRowCount(num, m_uiWrapContent.WidthDimension) * m_uiWrapContent.WidthDimension;
+ }
+
+ m_uiWrapContent.SetContentCount(num);
+ _InitContent(num, fadeIn);
+ m_uiWrapContent.AdjustContent();
+ }
+
+ private void OnItemUpdate(Transform item, int index)
+ {
+ if (updateHandler != null)
+ updateHandler(item, index);
+ }
+
+ private void OnItemInit(Transform item, int index)
+ {
+ if (initHandler != null)
+ initHandler(item, index);
+ }
+
+ public void RegisterItemUpdateEventHandler(WrapItemUpdateEventHandler eventHandler)
+ {
+ updateHandler = eventHandler;
+ }
+
+ public void RegisterItemInitEventHandler(WrapItemInitEventHandler eventHandler)
+ {
+ initHandler = eventHandler;
+ }
+
+ public void ResetPosition()
+ {
+ SetOffset(0);
+ }
+
+ public void SetOffset(int offset)
+ {
+ m_uiWrapContent.SetChildPositionOffset(offset);
+ m_uiWrapContent.WrapContent();
+ }
+
+ public void InitContent()
+ {
+ m_uiWrapContent.Init();
+ }
+
+ public void RefreshAllVisibleContents()
+ {
+ m_uiWrapContent.RefreshAllChildrenContent();
+ }
+
+ public void GetActiveList(List<GameObject> ret)
+ {
+ m_ItemPool.GetActiveList(ret);
+ }
+
+
+ private UIWrapContent m_uiWrapContent = null;
+ private WrapItemUpdateEventHandler updateHandler;
+ private WrapItemInitEventHandler initHandler;
+ private XUtliPoolLib.XUIPool m_ItemPool = new XUtliPoolLib.XUIPool(null);
+
+ public GameObject Tpl;
+}
+