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