using System; 
 | 
using System.Collections.Generic; 
 | 
using LitJson; 
 | 
using UnityEngine; 
 | 
using UnityEngine.UI; 
 | 
  
 | 
/// <summary> 
 | 
/// 随机宝箱:区分是真物品,还是预览 
 | 
/// 支持同时打开多个界面 
 | 
/// </summary> 
 | 
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<Item> 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<Item> tmpIDs = new List<Item>(); 
 | 
                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<Item> tmpIDs = new List<Item>(); 
 | 
        for (int j = 0; j < 4; j++) 
 | 
        { 
 | 
            int index = cell.index + j; 
 | 
            if (index >= items.Count) 
 | 
                break; 
 | 
            tmpIDs.Add(items[index]); 
 | 
        } 
 | 
  
 | 
        _cell.Display(tmpIDs); 
 | 
    } 
 | 
     
 | 
  
 | 
     
 | 
} 
 |