using EnhancedUI.EnhancedScroller; using System.Collections.Generic; using UnityEngine; public class TraveMapScrollViewController : EnhancedScroller, IEnhancedScrollerDelegate { TravelMapCtrl m_ctrl; EnhancedScroller m_Scroller; public TraveMapItem mapItemLeft; public TraveMapItem mapItemRight; List scrollerDataList = new List(); int lastLeft = 0; GameObject m_tips_noopen; public void Init(GameObject tips_noopen, EnhancedScroller scroller, TravelMapCtrl ctrl) { m_tips_noopen = tips_noopen; m_Scroller = scroller; m_ctrl = ctrl; scrollerDataList = m_ctrl.traveMapDataManager.mapItemList; //InitScrollerListData(); lastLeft = scrollerDataList.Count % 2; m_Scroller.Delegate = this; m_Scroller.ReloadData(); } public EnhancedScrollerCellView GetCellView(EnhancedScroller scroller, int dataIndex, int cellIndex) { TraveMapItem cellView; if (dataIndex % 2 == lastLeft) { cellView = scroller.GetCellView(mapItemLeft) as TraveMapItem; } else { cellView = scroller.GetCellView(mapItemRight) as TraveMapItem; } TraveMapItemData data = scrollerDataList[dataIndex]; if (cellView.data != null && cellView.data.showTips) { //隐藏提示 m_tips_noopen.SetActive(false); } if (data.showTips) { //显示提示 m_tips_noopen.SetActive(true); } cellView.SetData(data); cellView.onClickAction = OnClickMapItem; //cellView.gameObject.name = data.DataType + "-" + GetTypeDataIndex(data.DataType, dataIndex); return cellView; } public float GetCellViewSize(EnhancedScroller scroller, int dataIndex) { return 541; } public int GetNumberOfCells(EnhancedScroller scroller) { return scrollerDataList.Count; } public void OnClickMapItem(TraveMapItemData data) { if (data.type == TraveMapType.current) { m_ctrl.InBuildAct(); } else if (data.type == TraveMapType.unlocked) { m_ctrl.InVisit(data.index); } else { } } public TraveMapItem GetCurrentItem() { if (Container == null) return null; TraveMapItem[] items = Container.GetComponentsInChildren(); if (items == null || items.Length < 1) return null; foreach (var item in items) { if (item.data.type == TraveMapType.current) return item; } return null; } }