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);
}
}