using asap.core; using EnhancedUI.EnhancedScroller; using System.Collections; using System.Collections.Generic; namespace game { public class PotionScrollViewController : EnhancedScroller, IEnhancedScrollerDelegate { private EventPotionPanel m_Panel; private EventPotionDataManager m_DataManager; public void Init(EnhancedScroller scroller, EventPotionPanel potionPanel, EventPotionDataManager dataManager) { m_Scroller = scroller; m_Panel = potionPanel; m_DataManager = dataManager; InitScrollerListData(); m_Scroller.Delegate = this; m_Scroller.cellViewVisibilityChanged = CellViewVisibilityChanged; m_Scroller.cellViewWillRecycle = CellViewWillRecycle; m_Scroller.ReloadData(); } #region 操作相关 public void LockScrollView() { if (ScrollRect.vertical) { ScrollRect.vertical = false; } } public void UnlockScrollView() { if (!ScrollRect.vertical) { ScrollRect.vertical = true; } } public PotionItem GetOperationPotionItem() { if (Container == null) return null; PotionItem[] items = Container.GetComponentsInChildren(); if (items == null || items.Length < 1) return null; foreach (var item in items) { if (item.Data.DataType == EventPotionDataType.Data_ItemAndOperation) return item; } return null; } #endregion #region EnhancedScroller Handlers private EnhancedScroller m_Scroller; public PotionItem potionItem; List scrollerDataList = new List(); void InitScrollerListData() { scrollerDataList = m_DataManager.ScrollerDataList; } public int GetTypeDataIndex(EventPotionDataType dataType, int index) { if (dataType == EventPotionDataType.Data_Wall) { return index; } else if (dataType == EventPotionDataType.Data_ItemAndOperation) { return 0; } int tmp = m_Panel.ScrollViewMinimumQuantity - 1; return index - tmp; } public EnhancedScrollerCellView GetCellView(EnhancedScroller scroller, int dataIndex, int cellIndex) { PotionItem cellView = scroller.GetCellView(potionItem) as PotionItem; var data = scrollerDataList[dataIndex]; cellView.gameObject.name = data.DataType + "-" + GetTypeDataIndex(data.DataType, dataIndex); cellView.SetData(m_Panel, m_DataManager, data); return cellView; } public float GetCellViewSize(EnhancedScroller scroller, int dataIndex) { return 200f; } public int GetNumberOfCells(EnhancedScroller scroller) { return scrollerDataList.Count; } private void CellViewVisibilityChanged(EnhancedScrollerCellView cellView) { } private void CellViewWillRecycle(EnhancedScrollerCellView cellView) { PotionItem potionItem = cellView as PotionItem; string name = "Recycle-"; if (potionItem != null) { if (potionItem.Data != null) { name += potionItem.Data.DataType + "-"; } name += potionItem.dataIndex + "-" + potionItem.cellIndex; } cellView.gameObject.name = name; } #endregion } }