using System; using System.Collections.Generic; using LitJson; using UnityEngine; using UnityEngine.UI; /// /// 随机宝箱:区分是真物品,还是预览 /// 支持同时打开多个界面 /// public class BoxItemWin : UIBase { [SerializeField] ItemCell itemCell; [SerializeField] Text nameText; [SerializeField] Text descText; [SerializeField] ScrollerController scroller; [SerializeField] SliderPanel sliderPanel; [SerializeField] Button openButton; [SerializeField] CellView _InitCell; string guid; int itemID; int itemCount; int useCnt; List items; protected override void InitComponent() { openButton.AddListener(() => { if (useCnt == 0) { CloseWindow(); return; } if (ItemLogicUtility.Instance.UseItem(guid, useCnt)) { CloseWindow(); } }); } protected override void Start() { _InitCell.cellIdentifier = _InitCell.cellIdentifier + this.GetInstanceID().ToString(); } protected override void OnPreOpen() { itemID = ItemTipUtility.mainTipData.baseInfo.itemId; itemCount = ItemTipUtility.mainTipData.baseInfo.count; guid = ItemTipUtility.mainTipData.guid; itemCell.Init(new ItemCellModel(itemID, false, itemCount)); var itemConfig = ItemConfig.Get(itemID); nameText.text = itemConfig.ItemName; descText.text = itemConfig.Description; if (string.IsNullOrEmpty(guid)) { openButton.SetActive(false); sliderPanel.SetActive(false); } else { openButton.SetActive(true); sliderPanel.SetActive(true); } sliderPanel.Init((value) => { useCnt = value; }, itemCount); scroller.OnRefreshCell += OnRefreshCell; items = BoxGetItemModel.Instance.GetBoxItems(itemID); CreateScroller(); } protected override void OnPreClose() { scroller.OnRefreshCell -= OnRefreshCell; } void CreateScroller() { scroller.Refresh(); for (int i = 0; i < items.Count; i++) { if (i % 4 == 0) { List tmpIDs = new List(); for (int j = 0; j < 4; j++) { int index = i + j; if (index >= items.Count) break; tmpIDs.Add(items[index]); } scroller.AddCell(ScrollerDataType.Header, i); } } scroller.Restart(); } void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell as BoxItemLineCell; List tmpIDs = new List(); for (int j = 0; j < 4; j++) { int index = cell.index + j; if (index >= items.Count) break; tmpIDs.Add(items[index]); } _cell.Display(tmpIDs); } }