//-------------------------------------------------------- // [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(config.JobItem); for (int i = 0; i < arr.Length; i++) { //根据职业显示 CreateItemCell(arr[i][jobIndex]); } } else { List itemIDs = new List(); if (!string.IsNullOrEmpty(config.SelectList)) { var selectlistDict = ConfigParse.GetDic(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(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(); behaviour.transform.SetParentEx(boxItemsObj, Vector3.zero, Quaternion.identity, Vector3.one); behaviour.Init(new ItemCellModel(itemID, false, 1)); behaviour.button.AddListener(() => { ItemTipUtility.Show(itemID); }); } } }