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