//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Tuesday, March 12, 2019
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
using LitJson;
|
using System.Linq;
|
|
namespace vnxbqy.UI
|
{
|
|
public class ItemBoxTipWin : ItemTipWin
|
{
|
|
[SerializeField] RectTransform boxItemsObj;
|
|
|
#region Built-in
|
|
protected override void OnActived()
|
{
|
base.OnActived();
|
|
StartCoroutine(Co_DelayOneFrame());
|
}
|
|
|
#endregion
|
|
IEnumerator Co_DelayOneFrame()
|
{
|
this.transform.localScale = new Vector3(0, 1, 0);
|
DisplayerBoxItems();
|
|
yield return null;
|
yield return null;
|
this.transform.localScale = Vector3.one;
|
}
|
|
|
//显示宝箱中的物品
|
void DisplayerBoxItems()
|
{
|
var baseInfo = ItemTipUtility.mainTipData.baseInfo;
|
|
if (!ChestsAwardConfig.IsBox(baseInfo.itemId))
|
{
|
boxItemsObj.SetActive(false);
|
return;
|
}
|
boxItemsObj.SetActive(true);
|
//删除boxItemsObj的所有子物体
|
for (int i = 0; i < boxItemsObj.childCount; i++)
|
{
|
Destroy(boxItemsObj.GetChild(i).gameObject);
|
}
|
|
var config = ChestsAwardConfig.GetChestsAwardByID(baseInfo.itemId);
|
int jobIndex = PlayerDatas.Instance.baseData.Job - 1;
|
//优先判断 有职业区分的宝箱,职业替换物品组JobItem等同于包含了所有物品
|
if (!string.IsNullOrEmpty(config.JobItem))
|
{
|
var arr = JsonMapper.ToObject<int[][]>(config.JobItem);
|
for (int i = 0; i < arr.Length; i++)
|
{
|
//根据职业显示
|
CreateItemCell(arr[i][jobIndex]);
|
}
|
}
|
else
|
{
|
List<int> itemIDs = new List<int>();
|
if (!string.IsNullOrEmpty(config.SelectList))
|
{
|
var selectlistDict = ConfigParse.GetDic<int, int>(config.SelectList);
|
foreach (var item in selectlistDict)
|
{
|
if (!itemIDs.Contains(item.Key))
|
{
|
itemIDs.Add(item.Key);
|
}
|
}
|
}
|
|
if (!string.IsNullOrEmpty(config.FixedItem))
|
{
|
var itemListDict = ConfigParse.GetDic<int, int>(config.FixedItem);
|
foreach (var item in itemListDict)
|
{
|
if (!itemIDs.Contains(item.Key))
|
{
|
itemIDs.Add(item.Key);
|
}
|
}
|
}
|
|
if (!string.IsNullOrEmpty(config.Probability1))
|
{
|
var arr = JsonMapper.ToObject(config.Probability1);
|
|
for (int i = 0; i < arr.Count; i++)
|
{
|
var itemID = int.Parse(arr[i][1][0].ToString());
|
|
if (!itemIDs.Contains(itemID))
|
{
|
itemIDs.Add(itemID);
|
}
|
}
|
}
|
|
if (!string.IsNullOrEmpty(config.Probability2))
|
{
|
var arr = JsonMapper.ToObject(config.Probability2);
|
|
for (int i = 0; i < arr.Count; i++)
|
{
|
var itemID = int.Parse(arr[i][1][0].ToString());
|
|
if (!itemIDs.Contains(itemID))
|
{
|
itemIDs.Add(itemID);
|
}
|
}
|
}
|
if (itemIDs.Count == 0)
|
{
|
boxItemsObj.SetActive(false);
|
return;
|
}
|
|
for (int i = 0; i < itemIDs.Count; i++)
|
{
|
CreateItemCell(itemIDs[i]);
|
}
|
}
|
|
}
|
|
void CreateItemCell(int itemID)
|
{
|
var instance = UIUtility.CreateWidget("ItemCell", "ItemCell");
|
var behaviour = instance.GetComponent<ItemCell>();
|
behaviour.transform.SetParentEx(boxItemsObj, Vector3.zero, Quaternion.identity, Vector3.one);
|
behaviour.Init(new ItemCellModel(itemID, false, 1));
|
behaviour.button.AddListener(() => {
|
ItemTipUtility.Show(itemID);
|
});
|
}
|
|
|
}
|
}
|
|
|
|
|