using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class ItemTipWayWin : UIBase { [SerializeField] ItemCell itemCell; [SerializeField] Text nameText; [SerializeField] Text descText; [SerializeField] ScrollerController scroller; int itemID; protected override void OnPreOpen() { scroller.OnRefreshCell += OnRefreshCell; FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent; itemID = functionOrder; itemCell.Init(new ItemCellModel(itemID, false, 0)); var itemConfig = ItemConfig.Get(itemID); nameText.text = itemConfig.ItemName; descText.text = itemConfig.Description; CreateScroller(); } protected override void OnPreClose() { scroller.OnRefreshCell -= OnRefreshCell; FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent; } private void OnFuncStateChangeEvent(int obj) { CreateScroller(); } List GetWayList() { var itemConfig = ItemConfig.Get(itemID); if (itemConfig.GetWay.IsNullOrEmpty()) return new List(); List resList = new List(); for (int i = 0; i < itemConfig.GetWay.Length; i++) { int way = itemConfig.GetWay[i]; if (!GetItemWaysConfig.HasKey(way)) continue; GetItemWaysConfig config = GetItemWaysConfig.Get(way); int funcID = config.FuncID; if (FuncOpenLVConfig.HasKey(funcID) && !FuncOpen.Instance.IsFuncOpen(funcID)) continue; resList.Add(way); } return resList; } void CreateScroller() { var itemConfig = ItemConfig.Get(itemID); scroller.Refresh(); List wayList = GetWayList(); for (int i = 0; i < wayList.Count; i++) { scroller.AddCell(ScrollerDataType.Header, itemConfig.GetWay[i]); } scroller.Restart(); } void OnRefreshCell(ScrollerDataType type, CellView cell) { var way = GetItemWaysConfig.Get(cell.index); var nameText = cell.FindComponent("Text", "name") as Text; nameText.text = way.Name; var descText = cell.FindComponent("Text", "way") as Text; descText.text = way.Text; cell.GetComponent