From a0ede150686a218c92b901b1f20aef12a9913890 Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期五, 14 九月 2018 09:36:59 +0800
Subject: [PATCH] 1930【1.0.15】【主干】功能预告跳转八卦炉激活,功能预告界面未关闭
---
System/Skill/ScrollerController.cs | 970 ++++++++++++++++++++++++++++----------------------------
1 files changed, 485 insertions(+), 485 deletions(-)
diff --git a/System/Skill/ScrollerController.cs b/System/Skill/ScrollerController.cs
index 4f1d9cf..7b9859e 100644
--- a/System/Skill/ScrollerController.cs
+++ b/System/Skill/ScrollerController.cs
@@ -1,485 +1,485 @@
-锘縰sing System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-using EnhancedUI.EnhancedScroller;
-using System;
-using UnityEngine.UI;
-public enum EnhanceLockType
-{
- None,
- LockHorizonRight,
- LockHorizonLeft,
- LockVerticalTop,
- LockVerticalBottom,
- KeepHorizon,
- KeepVertical,
- KeepVertical2,
-}
-public class ScrollerController : MonoBehaviour, IEnhancedScrollerDelegate {
-
- private List<ScrollerData> _data = new List<ScrollerData>();
-
- public delegate void OnRefreshCellDelegate(ScrollerDataType type, CellView cell);
- public event OnRefreshCellDelegate OnRefreshCell;
-
- public delegate bool OnDynamicCell(ScrollerDataType type,int index,out float height);
- public event OnDynamicCell OnGetDynamicSize;
-
- public event Action OnRefreshCompleteEvent;
-
-
- public EnhancedScrollerCellView GetCellView(EnhancedScroller scroller, int dataIndex, int cellIndex)
- {
- CellView cell = GetCellView(scroller, dataIndex);
- if (!cell.gameObject.activeSelf) cell.gameObject.SetActive(true);
- cell.SetData(_data[dataIndex], _data[dataIndex].m_ScrollerType,this);
- if (_data[dataIndex].OnClick != null) {
- cell.OnClick = _data[dataIndex].OnClick;
- }
- cell.info = _data[dataIndex].info;
- if (OnRefreshCell != null) {
- OnRefreshCell(_data[dataIndex].m_ScrollerType, cell);
- }
- cell.RefreshUI();
- return cell;
- }
-
- private CellView GetCellView(EnhancedScroller scroller, int dataIndex)
- {
- CellView cell = null;
- switch (_data[dataIndex].m_ScrollerType) {
- case ScrollerDataType.Header:
- cell = scroller.GetCellView(m_CellHeaderPrefab) as CellView;
- break;
- case ScrollerDataType.Normal:
- cell = scroller.GetCellView(m_CellNomalPrefab) as CellView;
- break;
- case ScrollerDataType.Tail:
- cell = scroller.GetCellView(m_CellTailPrefab) as CellView;
- break;
- case ScrollerDataType.Extra1:
- cell = scroller.GetCellView(m_CellExtraPrefab1) as CellView;
- break;
- case ScrollerDataType.Extra2:
- cell = scroller.GetCellView(m_CellExtraPrefab2) as CellView;
- break;
- case ScrollerDataType.Extra3:
- cell = scroller.GetCellView(m_CellExtraPrefab3) as CellView;
- break;
- }
- return cell;
- }
-
- public float GetCellViewSize(EnhancedScroller scroller, int dataIndex)
- {
- if (OnGetDynamicSize != null) {
- float height = 0;
- if (OnGetDynamicSize(_data[dataIndex].m_ScrollerType, _data[dataIndex].index,out height)) {
- return height;
- }
- }
- switch (_data[dataIndex].m_ScrollerType) {
- case ScrollerDataType.Header:
- return m_CellHeaderPrefab.height;
- case ScrollerDataType.Normal:
- return m_CellNomalPrefab.height;
- case ScrollerDataType.Tail:
- return m_CellTailPrefab.height;
- case ScrollerDataType.Extra1:
- return m_CellExtraPrefab1.height;
- case ScrollerDataType.Extra2:
- return m_CellExtraPrefab2.height;
- case ScrollerDataType.Extra3:
- return m_CellExtraPrefab3.height;
- }
- return 80;
- }
-
- public void OnRefreshCellActive(CellView cell)
- {
- if (OnRefreshCell != null) {
- OnRefreshCell(cell.type, cell);
- }
- }
-
- public int GetNumberOfCells(EnhancedScroller scroller)
- {
- return _data.Count;
- }
-
- public EnhancedScroller m_Scorller;
- private ScrollRect m_ScrollRect;
- public ScrollRect mScrollRect {
- get {
- if (m_ScrollRect == null)
- m_ScrollRect = m_Scorller.GetComponent<ScrollRect>();
- return m_ScrollRect;
- }
- }
- public CellView m_CellHeaderPrefab;
- public CellView m_CellNomalPrefab;
- public CellView m_CellTailPrefab;
- public CellView m_CellExtraPrefab1;
- public CellView m_CellExtraPrefab2;
- public CellView m_CellExtraPrefab3;
- public int maxCellCnt = 0;
-
- public bool horizontal = false;
- public bool vertical = false;
- private bool inited = false;
- private int cacheJump = -1;
- private void Awake()
- {
- m_Scorller.Delegate = this;
- horizontal = mScrollRect.horizontal;
- vertical = mScrollRect.vertical;
-
- inited = m_Scorller.inited;
- m_Scorller.OnFirstLoadAllEvent += OnFirstLoadAllEvent;
- if (m_Scorller.OnCompLoad == null && !m_Scorller.inited)
- {
- m_Scorller.OnCompLoad = OnCompLoad;
- }
- HideDefaultCell();
- }
-
- private void OnFirstLoadAllEvent()
- {
- if (cacheJump != -1)
- {
- JumpIndex(cacheJump);
- }
- }
-
- private void HideDefaultCell()
- {
- HideDefaultCell(m_CellHeaderPrefab);
- HideDefaultCell(m_CellNomalPrefab);
- HideDefaultCell(m_CellTailPrefab);
- HideDefaultCell(m_CellExtraPrefab1);
- HideDefaultCell(m_CellExtraPrefab2);
- HideDefaultCell(m_CellExtraPrefab3);
- }
-
- private void HideDefaultCell(CellView _cell)
- {
- if (_cell != null)
- {
- _cell.gameObject.SetActive(false);
- }
- }
-
- List<CellView> list = new List<CellView>();
-
- private void OnCompLoad()
- {
- inited = true;
- if (_data.Count > 0)
- {
- Restart();
- }
- }
-
- public void Refresh()
- {
- inited = m_Scorller.inited;
- if (m_Scorller.OnCompLoad == null && !m_Scorller.inited)
- {
- m_Scorller.OnCompLoad = OnCompLoad;
- }
- _data.Clear();
-
- if (!inited)
- {
- return;
- }
-
- if(m_Scorller.LayoutGroup != null)
- {
- m_Scorller.LayoutGroup.spacing = m_Scorller.spacing;
- }
-
- lastScrollPos = horizontal ? mScrollRect.horizontalNormalizedPosition : mScrollRect.verticalNormalizedPosition;
- lastContentSize = m_Scorller._ScrollSize;
-
- mScrollRect.verticalNormalizedPosition = 1;
- mScrollRect.horizontalNormalizedPosition = 0;
-
- lastScrollPos = Mathf.Clamp01(lastScrollPos);
-
- }
-
- public CellView GetActiveCellView(int _index)
- {
- if (m_Scorller == null)
- {
- return null;
- }
- var _cellView = m_Scorller.GetActiveCellView(_index);
- if (_cellView != null)
- {
- return _cellView as CellView;
- }
- return null;
- }
-
- public void AddCell(ScrollerDataType type, int index, Action<CellView> action = null, CellInfo? info = null)
- {
- ScrollerData data = null;
- switch (type) {
- case ScrollerDataType.Header:
- data = new ScrollerHeaderData(index, action);
- break;
- case ScrollerDataType.Normal:
- data = new ScrollerNormalData(index, action);
- break;
- case ScrollerDataType.Tail:
- data = new ScrollerTailData(index, action);
- break;
- case ScrollerDataType.Extra1:
- case ScrollerDataType.Extra2:
- case ScrollerDataType.Extra3:
- data = new ScrollerExtraData(index, type, action);
- break;
- }
- if (data != null) {
- data.info = info;
- _data.Add(data);
- }
- }
-
- public void AddCell(ScrollerDataType type, int index, CellInfo info)
- {
- ScrollerData data = null;
- switch (type) {
- case ScrollerDataType.Header:
- data = new ScrollerHeaderData(index);
- break;
- case ScrollerDataType.Normal:
- data = new ScrollerNormalData(index);
- break;
- case ScrollerDataType.Tail:
- data = new ScrollerTailData(index);
- break;
- case ScrollerDataType.Extra1:
- case ScrollerDataType.Extra2:
- case ScrollerDataType.Extra3:
- data = new ScrollerExtraData(index, type);
- break;
- }
- if (data != null) {
- data.info = info;
- _data.Add(data);
- }
- }
-
- public void OnRefreshAdd()
- {
- Restart();
- }
-
- public void Restart()
- {
- if (!inited) return;
-
-
- m_Scorller.ReloadData();
- if (maxCellCnt != 0 && _data.Count <= maxCellCnt)
- {
- mScrollRect.horizontal = false;
- mScrollRect.vertical = false;
- }
- else
- {
- mScrollRect.horizontal = horizontal;
- mScrollRect.vertical = vertical;
- }
-
- ResetScrollPos();
-
- lastDataCnt = _data.Count;
- }
-
- public void JumpIndex(int index)
- {
- if (!inited)
- {
- cacheJump = index;
- return;
- }
- if ((index < 0 || index >= _data.Count) && !m_Scorller.Loop) return;
- var _size = m_Scorller.GetScrollPositionForDataIndex(index, EnhancedScroller.CellViewPositionEnum.Before);
- var _contentSize = vertical ? m_Scorller.scrollRect.content.rect.size.y : m_Scorller.scrollRect.content.rect.size.x;
- if (_contentSize - _size < m_Scorller.ScrollRectSize)
- {
- _size = _contentSize - m_Scorller.ScrollRectSize;
- }
- m_Scorller.ScrollPosition = _size;
- }
-
- public float GetCellSize(int _dataIndex)
- {
- if (!inited)
- {
- return 0;
- }
- return m_Scorller.GetCellSize(_dataIndex);
- }
-
- public void JumpIndex(float _delta, float _time, EnhancedScroller.TweenType _tweenType)
- {
- if (!inited)
- {
- return;
- }
- m_Scorller.Tween(_tweenType, _time, m_Scorller.ScrollPosition + _delta);
- }
-
- public float GetPreScrollSize(int index)
- {
- float _size = 0;
- for (int i = 0; i < _data.Count; i++) {
- _size += GetCellViewSize(m_Scorller, i);
- if (i >= index) break;
- }
- return _size;
- }
-
- public void RefreshSingleCellView(int _index)
- {
- CellView _cell;
- if (IsDisplay(_index, out _cell))
- {
- _cell.RefreshCellView();
- }
- }
-
- public bool IsDisplay(int index, out CellView _cell)
- {
- _cell = null;
- if (m_Scorller == null)
- {
- return false;
- }
- var _base = m_Scorller.GetActiveCellView(index);
- if (_base != null)
- {
- _cell = _base as CellView;
- return true;
- }
- return false;
- }
-
- public bool IsDisplay(int index)
- {
- if (m_Scorller == null)
- {
- return false;
- }
- return m_Scorller.GetActiveCellView(index) != null;
- }
-
- public bool OutOfStartView(int index)
- {
- float value=m_Scorller.GetScrollPositionForCellViewIndex(index, EnhancedScroller.CellViewPositionEnum.Before);
- if (value < m_Scorller.ScrollPosition) {
- return true;
- }
- return false;
- }
-
- private void OnDestroy()
- {
- if (m_Scorller != null)
- {
- m_Scorller.OnFirstLoadAllEvent -= OnFirstLoadAllEvent;
- }
- }
-
- public void OnRebuildComplete()
- {
- if (OnRefreshCompleteEvent != null)
- {
- OnRefreshCompleteEvent();
- }
- }
-
- #region 婊氬姩瀹氫綅
-
- private EnhanceLockType m_lockType = EnhanceLockType.None;
-
- public EnhanceLockType lockType {
- get { return m_lockType; }
- set {
- m_lockType = value;
- }
- }
-
- private float lastContentSize = 0;
-
- private int lastDataCnt = 0;
-
- private float lastScrollPos = 0;
-
- public void ResetScrollPos()
- {
- if (_data.Count == 0)
- {
- return;
- }
- switch (lockType) {
- case EnhanceLockType.LockHorizonRight: {
- mScrollRect.horizontalNormalizedPosition = 1;
- }
- break;
- case EnhanceLockType.LockHorizonLeft: {
- mScrollRect.horizontalNormalizedPosition = 0;
- }
- break;
- case EnhanceLockType.LockVerticalTop: {
- mScrollRect.verticalNormalizedPosition = 1;
- }
- break;
- case EnhanceLockType.LockVerticalBottom: {
- mScrollRect.verticalNormalizedPosition = 0;
- m_Scorller.ScrollPosition = m_Scorller._ScrollSize;
- }
- break;
- case EnhanceLockType.KeepHorizon: {
- mScrollRect.horizontalNormalizedPosition = Mathf.Clamp01(lastContentSize * lastScrollPos / m_Scorller._ScrollSize);
- }
- break;
- case EnhanceLockType.KeepVertical2: {
- if(lastContentSize == m_Scorller._ScrollSize) {
- mScrollRect.verticalNormalizedPosition = lastScrollPos;
- m_Scorller.ScrollPosition = (1 - mScrollRect.verticalNormalizedPosition) * m_Scorller._ScrollSize;
- return;
- }
- if (lastScrollPos == 1) {
- mScrollRect.verticalNormalizedPosition = 1;
- }
- mScrollRect.verticalNormalizedPosition = Mathf.Clamp01(lastContentSize * lastScrollPos / m_Scorller._ScrollSize);
- m_Scorller.ScrollPosition = (1 - mScrollRect.verticalNormalizedPosition) * m_Scorller._ScrollSize;
- }
- break;
- case EnhanceLockType.KeepVertical:
- {
- if (lastContentSize == m_Scorller._ScrollSize)
- {
- mScrollRect.verticalNormalizedPosition = lastScrollPos;
- m_Scorller.ScrollPosition = (1 - mScrollRect.verticalNormalizedPosition) * m_Scorller._ScrollSize;
- return;
- }
- if (lastScrollPos == 1)
- {
- mScrollRect.verticalNormalizedPosition = 1;
- }
- mScrollRect.verticalNormalizedPosition = Mathf.Clamp01(1 - lastContentSize * (1 - lastScrollPos) / m_Scorller._ScrollSize);
- m_Scorller.ScrollPosition = (1 - mScrollRect.verticalNormalizedPosition) * m_Scorller._ScrollSize;
- }
- break;
- }
- }
-
- #endregion
-}
+锘縰sing System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using EnhancedUI.EnhancedScroller;
+using System;
+using UnityEngine.UI;
+public enum EnhanceLockType
+{
+ None,
+ LockHorizonRight,
+ LockHorizonLeft,
+ LockVerticalTop,
+ LockVerticalBottom,
+ KeepHorizon,
+ KeepVertical,
+ KeepVertical2,
+}
+public class ScrollerController : MonoBehaviour, IEnhancedScrollerDelegate {
+
+ private List<ScrollerData> _data = new List<ScrollerData>();
+
+ public delegate void OnRefreshCellDelegate(ScrollerDataType type, CellView cell);
+ public event OnRefreshCellDelegate OnRefreshCell;
+
+ public delegate bool OnDynamicCell(ScrollerDataType type,int index,out float height);
+ public event OnDynamicCell OnGetDynamicSize;
+
+ public event Action OnRefreshCompleteEvent;
+
+
+ public EnhancedScrollerCellView GetCellView(EnhancedScroller scroller, int dataIndex, int cellIndex)
+ {
+ CellView cell = GetCellView(scroller, dataIndex);
+ if (!cell.gameObject.activeSelf) cell.gameObject.SetActive(true);
+ cell.SetData(_data[dataIndex], _data[dataIndex].m_ScrollerType,this);
+ if (_data[dataIndex].OnClick != null) {
+ cell.OnClick = _data[dataIndex].OnClick;
+ }
+ cell.info = _data[dataIndex].info;
+ if (OnRefreshCell != null) {
+ OnRefreshCell(_data[dataIndex].m_ScrollerType, cell);
+ }
+ cell.RefreshUI();
+ return cell;
+ }
+
+ private CellView GetCellView(EnhancedScroller scroller, int dataIndex)
+ {
+ CellView cell = null;
+ switch (_data[dataIndex].m_ScrollerType) {
+ case ScrollerDataType.Header:
+ cell = scroller.GetCellView(m_CellHeaderPrefab) as CellView;
+ break;
+ case ScrollerDataType.Normal:
+ cell = scroller.GetCellView(m_CellNomalPrefab) as CellView;
+ break;
+ case ScrollerDataType.Tail:
+ cell = scroller.GetCellView(m_CellTailPrefab) as CellView;
+ break;
+ case ScrollerDataType.Extra1:
+ cell = scroller.GetCellView(m_CellExtraPrefab1) as CellView;
+ break;
+ case ScrollerDataType.Extra2:
+ cell = scroller.GetCellView(m_CellExtraPrefab2) as CellView;
+ break;
+ case ScrollerDataType.Extra3:
+ cell = scroller.GetCellView(m_CellExtraPrefab3) as CellView;
+ break;
+ }
+ return cell;
+ }
+
+ public float GetCellViewSize(EnhancedScroller scroller, int dataIndex)
+ {
+ if (OnGetDynamicSize != null) {
+ float height = 0;
+ if (OnGetDynamicSize(_data[dataIndex].m_ScrollerType, _data[dataIndex].index,out height)) {
+ return height;
+ }
+ }
+ switch (_data[dataIndex].m_ScrollerType) {
+ case ScrollerDataType.Header:
+ return m_CellHeaderPrefab.height;
+ case ScrollerDataType.Normal:
+ return m_CellNomalPrefab.height;
+ case ScrollerDataType.Tail:
+ return m_CellTailPrefab.height;
+ case ScrollerDataType.Extra1:
+ return m_CellExtraPrefab1.height;
+ case ScrollerDataType.Extra2:
+ return m_CellExtraPrefab2.height;
+ case ScrollerDataType.Extra3:
+ return m_CellExtraPrefab3.height;
+ }
+ return 80;
+ }
+
+ public void OnRefreshCellActive(CellView cell)
+ {
+ if (OnRefreshCell != null) {
+ OnRefreshCell(cell.type, cell);
+ }
+ }
+
+ public int GetNumberOfCells(EnhancedScroller scroller)
+ {
+ return _data.Count;
+ }
+
+ public EnhancedScroller m_Scorller;
+ private ScrollRect m_ScrollRect;
+ public ScrollRect mScrollRect {
+ get {
+ if (m_ScrollRect == null)
+ m_ScrollRect = m_Scorller.GetComponent<ScrollRect>();
+ return m_ScrollRect;
+ }
+ }
+ public CellView m_CellHeaderPrefab;
+ public CellView m_CellNomalPrefab;
+ public CellView m_CellTailPrefab;
+ public CellView m_CellExtraPrefab1;
+ public CellView m_CellExtraPrefab2;
+ public CellView m_CellExtraPrefab3;
+ public int maxCellCnt = 0;
+
+ public bool horizontal = false;
+ public bool vertical = false;
+ private bool inited = false;
+ private int cacheJump = -1;
+ private void Awake()
+ {
+ m_Scorller.Delegate = this;
+ horizontal = mScrollRect.horizontal;
+ vertical = mScrollRect.vertical;
+
+ inited = m_Scorller.inited;
+ m_Scorller.OnFirstLoadAllEvent += OnFirstLoadAllEvent;
+ if (m_Scorller.OnCompLoad == null && !m_Scorller.inited)
+ {
+ m_Scorller.OnCompLoad = OnCompLoad;
+ }
+ HideDefaultCell();
+ }
+
+ private void OnFirstLoadAllEvent()
+ {
+ if (cacheJump != -1)
+ {
+ JumpIndex(cacheJump);
+ }
+ }
+
+ private void HideDefaultCell()
+ {
+ HideDefaultCell(m_CellHeaderPrefab);
+ HideDefaultCell(m_CellNomalPrefab);
+ HideDefaultCell(m_CellTailPrefab);
+ HideDefaultCell(m_CellExtraPrefab1);
+ HideDefaultCell(m_CellExtraPrefab2);
+ HideDefaultCell(m_CellExtraPrefab3);
+ }
+
+ private void HideDefaultCell(CellView _cell)
+ {
+ if (_cell != null)
+ {
+ _cell.gameObject.SetActive(false);
+ }
+ }
+
+ List<CellView> list = new List<CellView>();
+
+ private void OnCompLoad()
+ {
+ inited = true;
+ if (_data.Count > 0)
+ {
+ Restart();
+ }
+ }
+
+ public void Refresh()
+ {
+ inited = m_Scorller.inited;
+ if (m_Scorller.OnCompLoad == null && !m_Scorller.inited)
+ {
+ m_Scorller.OnCompLoad = OnCompLoad;
+ }
+ _data.Clear();
+
+ if (!inited)
+ {
+ return;
+ }
+
+ if(m_Scorller.LayoutGroup != null)
+ {
+ m_Scorller.LayoutGroup.spacing = m_Scorller.spacing;
+ }
+
+ lastScrollPos = horizontal ? mScrollRect.horizontalNormalizedPosition : mScrollRect.verticalNormalizedPosition;
+ lastContentSize = m_Scorller._ScrollSize;
+
+ mScrollRect.verticalNormalizedPosition = 1;
+ mScrollRect.horizontalNormalizedPosition = 0;
+
+ lastScrollPos = Mathf.Clamp01(lastScrollPos);
+
+ }
+
+ public CellView GetActiveCellView(int _index)
+ {
+ if (m_Scorller == null)
+ {
+ return null;
+ }
+ var _cellView = m_Scorller.GetActiveCellView(_index);
+ if (_cellView != null)
+ {
+ return _cellView as CellView;
+ }
+ return null;
+ }
+
+ public void AddCell(ScrollerDataType type, int index, Action<CellView> action = null, CellInfo? info = null)
+ {
+ ScrollerData data = null;
+ switch (type) {
+ case ScrollerDataType.Header:
+ data = new ScrollerHeaderData(index, action);
+ break;
+ case ScrollerDataType.Normal:
+ data = new ScrollerNormalData(index, action);
+ break;
+ case ScrollerDataType.Tail:
+ data = new ScrollerTailData(index, action);
+ break;
+ case ScrollerDataType.Extra1:
+ case ScrollerDataType.Extra2:
+ case ScrollerDataType.Extra3:
+ data = new ScrollerExtraData(index, type, action);
+ break;
+ }
+ if (data != null) {
+ data.info = info;
+ _data.Add(data);
+ }
+ }
+
+ public void AddCell(ScrollerDataType type, int index, CellInfo info)
+ {
+ ScrollerData data = null;
+ switch (type) {
+ case ScrollerDataType.Header:
+ data = new ScrollerHeaderData(index);
+ break;
+ case ScrollerDataType.Normal:
+ data = new ScrollerNormalData(index);
+ break;
+ case ScrollerDataType.Tail:
+ data = new ScrollerTailData(index);
+ break;
+ case ScrollerDataType.Extra1:
+ case ScrollerDataType.Extra2:
+ case ScrollerDataType.Extra3:
+ data = new ScrollerExtraData(index, type);
+ break;
+ }
+ if (data != null) {
+ data.info = info;
+ _data.Add(data);
+ }
+ }
+
+ public void OnRefreshAdd()
+ {
+ Restart();
+ }
+
+ public void Restart()
+ {
+ if (!inited) return;
+
+
+ m_Scorller.ReloadData();
+ if (maxCellCnt != 0 && _data.Count <= maxCellCnt)
+ {
+ mScrollRect.horizontal = false;
+ mScrollRect.vertical = false;
+ }
+ else
+ {
+ mScrollRect.horizontal = horizontal;
+ mScrollRect.vertical = vertical;
+ }
+
+ ResetScrollPos();
+
+ lastDataCnt = _data.Count;
+ }
+
+ public void JumpIndex(int index)
+ {
+ if (!inited)
+ {
+ cacheJump = index;
+ return;
+ }
+ if ((index < 0 || index >= _data.Count) && !m_Scorller.Loop) return;
+ var _size = m_Scorller.GetScrollPositionForDataIndex(index, EnhancedScroller.CellViewPositionEnum.Before);
+ var _contentSize = vertical ? m_Scorller.scrollRect.content.rect.size.y : m_Scorller.scrollRect.content.rect.size.x;
+ if (_contentSize - _size < m_Scorller.ScrollRectSize)
+ {
+ _size = _contentSize - m_Scorller.ScrollRectSize;
+ }
+ m_Scorller.ScrollPosition = _size;
+ }
+
+ public float GetCellSize(int _dataIndex)
+ {
+ if (!inited)
+ {
+ return 0;
+ }
+ return m_Scorller.GetCellSize(_dataIndex);
+ }
+
+ public void JumpIndex(float _delta, float _time, EnhancedScroller.TweenType _tweenType)
+ {
+ if (!inited)
+ {
+ return;
+ }
+ m_Scorller.Tween(_tweenType, _time, m_Scorller.ScrollPosition + _delta);
+ }
+
+ public float GetPreScrollSize(int index)
+ {
+ float _size = 0;
+ for (int i = 0; i < _data.Count; i++) {
+ _size += GetCellViewSize(m_Scorller, i);
+ if (i >= index) break;
+ }
+ return _size;
+ }
+
+ public void RefreshSingleCellView(int _index)
+ {
+ CellView _cell;
+ if (IsDisplay(_index, out _cell))
+ {
+ _cell.RefreshCellView();
+ }
+ }
+
+ public bool IsDisplay(int index, out CellView _cell)
+ {
+ _cell = null;
+ if (m_Scorller == null)
+ {
+ return false;
+ }
+ var _base = m_Scorller.GetActiveCellView(index);
+ if (_base != null)
+ {
+ _cell = _base as CellView;
+ return true;
+ }
+ return false;
+ }
+
+ public bool IsDisplay(int index)
+ {
+ if (m_Scorller == null)
+ {
+ return false;
+ }
+ return m_Scorller.GetActiveCellView(index) != null;
+ }
+
+ public bool OutOfStartView(int index)
+ {
+ float value=m_Scorller.GetScrollPositionForCellViewIndex(index, EnhancedScroller.CellViewPositionEnum.Before);
+ if (value < m_Scorller.ScrollPosition) {
+ return true;
+ }
+ return false;
+ }
+
+ private void OnDestroy()
+ {
+ if (m_Scorller != null)
+ {
+ m_Scorller.OnFirstLoadAllEvent -= OnFirstLoadAllEvent;
+ }
+ }
+
+ public void OnRebuildComplete()
+ {
+ if (OnRefreshCompleteEvent != null)
+ {
+ OnRefreshCompleteEvent();
+ }
+ }
+
+ #region 婊氬姩瀹氫綅
+
+ private EnhanceLockType m_lockType = EnhanceLockType.None;
+
+ public EnhanceLockType lockType {
+ get { return m_lockType; }
+ set {
+ m_lockType = value;
+ }
+ }
+
+ private float lastContentSize = 0;
+
+ private int lastDataCnt = 0;
+
+ private float lastScrollPos = 0;
+
+ public void ResetScrollPos()
+ {
+ if (_data.Count == 0)
+ {
+ return;
+ }
+ switch (lockType) {
+ case EnhanceLockType.LockHorizonRight: {
+ mScrollRect.horizontalNormalizedPosition = 1;
+ }
+ break;
+ case EnhanceLockType.LockHorizonLeft: {
+ mScrollRect.horizontalNormalizedPosition = 0;
+ }
+ break;
+ case EnhanceLockType.LockVerticalTop: {
+ mScrollRect.verticalNormalizedPosition = 1;
+ }
+ break;
+ case EnhanceLockType.LockVerticalBottom: {
+ mScrollRect.verticalNormalizedPosition = 0;
+ m_Scorller.ScrollPosition = m_Scorller._ScrollSize;
+ }
+ break;
+ case EnhanceLockType.KeepHorizon: {
+ mScrollRect.horizontalNormalizedPosition = Mathf.Clamp01(lastContentSize * lastScrollPos / m_Scorller._ScrollSize);
+ }
+ break;
+ case EnhanceLockType.KeepVertical2: {
+ if(lastContentSize == m_Scorller._ScrollSize) {
+ mScrollRect.verticalNormalizedPosition = lastScrollPos;
+ m_Scorller.ScrollPosition = (1 - mScrollRect.verticalNormalizedPosition) * m_Scorller._ScrollSize;
+ return;
+ }
+ if (lastScrollPos == 1) {
+ mScrollRect.verticalNormalizedPosition = 1;
+ }
+ mScrollRect.verticalNormalizedPosition = Mathf.Clamp01(lastContentSize * lastScrollPos / m_Scorller._ScrollSize);
+ m_Scorller.ScrollPosition = (1 - mScrollRect.verticalNormalizedPosition) * m_Scorller._ScrollSize;
+ }
+ break;
+ case EnhanceLockType.KeepVertical:
+ {
+ if (lastContentSize == m_Scorller._ScrollSize)
+ {
+ mScrollRect.verticalNormalizedPosition = lastScrollPos;
+ m_Scorller.ScrollPosition = (1 - mScrollRect.verticalNormalizedPosition) * m_Scorller._ScrollSize;
+ return;
+ }
+ if (lastScrollPos == 1)
+ {
+ mScrollRect.verticalNormalizedPosition = 1;
+ }
+ mScrollRect.verticalNormalizedPosition = Mathf.Clamp01(1 - lastContentSize * (1 - lastScrollPos) / m_Scorller._ScrollSize);
+ m_Scorller.ScrollPosition = (1 - mScrollRect.verticalNormalizedPosition) * m_Scorller._ScrollSize;
+ }
+ break;
+ }
+ }
+
+ #endregion
+}
--
Gitblit v1.8.0