Files
back_cantanBuilding/Assets/Scripts/TravelMap/TraveMapScrollViewController.cs
2026-05-26 16:15:54 +08:00

96 lines
2.6 KiB
C#

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<TraveMapItemData> scrollerDataList = new List<TraveMapItemData>();
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<TraveMapItem>();
if (items == null || items.Length < 1) return null;
foreach (var item in items)
{
if (item.data.type == TraveMapType.current) return item;
}
return null;
}
}